在本地安装时如何使我的NPM软件包显示“npm WARN prefer global”

很难谷歌的主题 – 太多的用户问题,我的包是关于开发。 我想要一个我的软件包的用户看到“npm警告偏好全球”安装时不全球。

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

我的环境:

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

你需要指定

 "preferGlobal": true 

在你的package.json

文档

Ben Fortune的答案指定npm软件包作者如何指定软件包为偏好全局安装 (通过添加键值对"preferGlobal": truepackage.json文件)。

不幸的是,正如OP自己在评论中指出的那样,这对于在本地 安装这样的软件包的用户来说总是会触发警告

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

警告 – npm WARN prefer global <pkgName>@<ver> should be installed with -gnpm WARN prefer global <pkgName>@<ver> should be installed with -g 只有以下情况下才会被触发

  • 在当前目录下有一个有效的package.json文件
  • 并且它包含一个dependencies和/或optionalDependenciesdependencies关键字,其值是一个对象(不pipe是否为空) – 除非手头的包恰好包含在其中。

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

  • 在一个不是npm包项目的目录中(没有package.json文件)。
  • 在npm package-project目录下,根本没有运行时依赖关系(没有dependencies和/或optionalDependencies键 – 相比之下, devDependencies和/或peerDependencies本身不会触发警告)。
  • 在一个npm package-project目录中,碰巧已经将pkgName安装为一个(按照定义本地) 运行时依赖关系(在关键dependenciesoptionalDependencies dependencies )。

请注意,即使--loglevel silly也不会改变这种行为,所以目前没有办法强制无条件地显示警告

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