在本地安装时如何使我的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": true
为package.json
文件)。
不幸的是,正如OP自己在评论中指出的那样,这对于在本地 安装这样的软件包的用户来说总是会触发警告 。
从npm 2.3.0开始,在本地安装全局安装首选包时,使用npm install <pkgName>
(即没有-g
)时,行为如下所示:
警告 – npm WARN prefer global <pkgName>@<ver> should be installed with -g
– npm WARN prefer global <pkgName>@<ver> should be installed with -g
只有在以下情况下才会被触发 :
- 在当前目录下有一个有效的
package.json
文件 , - 并且它包含一个
dependencies
和/或optionalDependencies
的dependencies
关键字,其值是一个对象(不pipe是否为空) – 除非手头的包恰好包含在其中。
实际上,这意味着在以下情况下运行npm install <pkgName>
(即,不使用-g
)时不会看到警告 :
- 在一个不是npm包项目的目录中(没有
package.json
文件)。 - 在npm package-project目录下,根本没有运行时依赖关系(没有
dependencies
和/或optionalDependencies
键 – 相比之下,devDependencies
和/或peerDependencies
本身不会触发警告)。 - 在一个npm package-project目录中,碰巧已经将
pkgName
安装为一个(按照定义本地) 运行时依赖关系(在关键dependencies
或optionalDependencies
dependencies
)。
请注意,即使--loglevel silly
也不会改变这种行为,所以目前没有办法强制无条件地显示警告 。
指定一个包为全局的确有一个无条件的副作用,但是:在npmregistry中( http://npmjs.com ),这个包的右侧边栏中显示的安装命令是npm install <pkgName> -g
; 即它包含-g
。
[ 更新:此function在前一段时间已经打破,截至2015年9月14日仍然被打破 – 请参阅 https://github.com/npm/newww/issues/1017 ]