如何制作我的NPM套餐节目" npm WARN更喜欢全球"在本地安装时

时间:2014-06-16 14:06:58

标签: node.js npm package.json

难以google the subj - 太多的用户问题,我的是关于包开发。我希望我的软件包的用户在全局安装时看到“npm WARN prefer global”

我以为npm install yo曾经有这样的警告,但现在却没有。至少我看不到它。

我的环境:

  › npm --version
1.4.10
  › node -v
v0.10.28

3 个答案:

答案 0 :(得分:10)

Ben Fortune's answer指定 npm包作者如何将包指定为全局安装(通过添加键值对) "preferGlobal": true文件package.json

可悲的是,正如OP自己在评论中指出的那样, 总是触发用户安装这样的包的警告本地

从npm 2.3.0开始,使用npm install <pkgName>(即没有-g)在本地安装全局安装首选软件包时的行为如下:

警告 - npm WARN prefer global <pkgName>@<ver> should be installed with -g - 仅触发,如果

  • 当前目录中有有效package.json文件
  • 并且它包含dependencies和/或optionalDependencies,其值是一个对象(无论是否为空) - 除非手头的包裹恰好包含在其中

实际上,这意味着在以下情况下运行npm install <pkgName>(即没有-g)时,您将看不到警告

  • 在一个不是npm包项目的目录中(没有package.json文件)。
  • 在npm package-project目录中,恰好没有运行时依赖项(没有dependencies和/或optionalDependencies键 - 相比之下,键{{1并且/或devDependencies单独执行而不是触发警告)。
  • 在npm package-project目录中,恰好已将peerDependencies安装为(按定义本地)运行时依赖关系(在密钥pkgName或{{1}中})。

请注意,即使dependencies也不会改变此行为,因此目前无法强制无条件显示警告

将程序包指定为全局确实有一个无条件副作用,但是:在npm注册表(http://npmjs.com)中,右侧边栏中显示的安装命令用于此类程序包是optionalDependencies;即它确实包括--loglevel silly [更新:此功能已于前一段时间推出,截至2015年9月14日仍未解决 - 请参阅 https://github.com/npm/newww/issues/1017]

答案 1 :(得分:9)

您需要指定

"preferGlobal": true

package.json

Documentation

答案 2 :(得分:0)

preferGlobal现在是deprecated

  

此选项用于触发npm警告,但不再显示   警告。纯粹出于信息目的。就是现在   建议您将任何二进制文件安装为本地devDependencies   尽可能。