Node.js 我如何让我的NPM套餐展示;npm警告首选“全球”;在本地安装时

Node.js 我如何让我的NPM套餐展示;npm警告首选“全球”;在本地安装时,node.js,npm,package.json,Node.js,Npm,Package.json,很难用谷歌搜索这个主题——太多的用户问题,我的问题是关于软件包开发的。我希望我的软件包的用户在安装时看到“npm WARN prefer global”,而不是全局安装 我原以为npm install yo以前有这样的警告,但现在没有了。至少我看不见 我的环境: › npm --version 1.4.10 › node -v v0.10.28 您需要指定 "preferGlobal": true 在您的包.json中 指定npm软件包作者如何将软件包指定为首选全局安装(通过向pac

很难用谷歌搜索这个主题——太多的用户问题,我的问题是关于软件包开发的。我希望我的软件包的用户在安装时看到“npm WARN prefer global”,而不是全局安装

我原以为npm install yo以前有这样的警告,但现在没有了。至少我看不见

我的环境:

  › npm --version
1.4.10
  › node -v
v0.10.28
您需要指定

"preferGlobal": true
在您的
包.json

指定npm软件包作者如何将软件包指定为首选全局安装(通过向
package.json
文件添加键值对
“preferGlobal”:true

遗憾的是,正如OP自己在评论中指出的那样,这还不足以总是触发用户在本地安装此类软件包的警告

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

警告-
npm WARN preference global@应与-g一起安装,只有在以下情况下才会触发-g

  • 当前目录中有一个有效的
    package.json
    文件
  • 并且它包含一个
    依赖项
    和/或
    可选依赖项
    ,其值是一个对象(无论是否为空)-除非手头的包恰好包含在其中
实际上,这意味着在以下情况下运行
npm install
(即没有
-g
)时,您不会看到警告:

  • 在非npm包项目的目录中(无
    package.json
    file)
  • 在恰好完全没有运行时依赖项的npm包项目目录中(没有
    依赖项
    和/或
    可选依赖项
    键-相比之下,键
    依赖项
    和/或
    对等依赖项
    本身不会触发警告)
  • 在一个npm包项目目录中,该目录碰巧已经安装了
    pkgName
    (根据定义是本地的)运行时依赖项(在key
    dependencies
    optionalDependencies
    中)

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

但是,将包指定为全局包确实有一个无条件的副作用:在npm注册表()中,右侧侧栏中显示的此类包的安装命令是
npm install-g
;i、 例如,它确实包括
-g


[更新:此功能不久前已中断,截至2015年9月14日仍处于中断状态-请参阅]

preferGlobal
现在是:

此选项用于触发npm警告,但不再触发 警告。它纯粹是为了提供信息。现在是 建议您将任何二进制文件安装为本地devdependency 只要可能


谢谢但不仅如此。我发现,只有当用户将它运行到包含
package.json
文件和
依赖项的文件夹中时,它才起作用。如果没有这样一个字段,该标志将不起作用。仅供参考:现在不推荐使用此选项冰分解!太复杂了。