在本地安装时,如何让我的NPM包显示"npm WARN prefer global"

Var*_*ova 4 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
Run Code Online (Sandbox Code Playgroud)

mkl*_*nt0 10

奔财富的回答指定了如何与NPM包作者可以指定一个包作为宁愿全球安装(通过添加键值对"preferGlobal": truepackage.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键 - 相反,键devDependencies和/或peerDependencies单独不会触发警告).
  • 在npm package-project目录中,恰好pkgName已经安装为(通过定义本地)运行时依赖项(在key dependencies或中optionalDependencies).

请注意,即使--loglevel silly不改变此行为,因此目前无法强制无条件显示警告.

将包指定为全局确实具有一个无条件的副作用,但是:在npm注册表(http://npmjs.com)中,右侧边栏中显示的安装命令是这样的包npm install <pkgName> -g; 即它确实包括-g.
[ 更新:此功能已经破了一段时间,截至2015年9月14日仍然存在 - 请参阅 https://github.com/npm/newww/issues/1017 ]


Ben*_*une 9

你需要指定

"preferGlobal": true
Run Code Online (Sandbox Code Playgroud)

在你的package.json.

文档