6

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

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

我的环境:

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

3 回答 3

12

Ben Fortune 的回答指定了 npm 包作者如何将包指定为首选全局安装(通过将键值对添加"preferGlobal": truepackage.json文件中)。

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

npm install <pkgName>从 npm 2.3.0 开始,在本地安装 global-installation-preferred 包时,使用(即不带)时的行为如下-g

警告 - npm WARN prefer global <pkgName>@<ver> should be installed with -g-在以下情况下触发

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

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

  • 在不是 npm 包项目(无package.json文件)的目录中。
  • 在恰好没有运行时依赖项的 npm 包项目目录中(没有dependencies和/或optionalDependencies键 - 相比之下,键devDependencies和/或peerDependencies单独不会触发警告)。
  • 在一个 npm package-project 目录中,该目录恰好pkgName已经安装为(根据定义为本地)运行时依赖项(在 keydependencies或中optionalDependencies)。

请注意, even--loglevel silly不会改变此行为,因此目前无法强制无条件显示 warning

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

于 2015-01-29T04:24:44.613 回答
9

您需要指定

"preferGlobal": true

在你的package.json.

文档

于 2014-06-16T14:11:44.477 回答
0

preferGlobal现在已弃用

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

于 2018-05-22T21:38:48.513 回答