使 NPM 包管理器列表显示安装方向的全局标志

Posted

技术标签:

【中文标题】使 NPM 包管理器列表显示安装方向的全局标志【英文标题】:Make NPM Package Manager Listing show the global flag for the install directions 【发布时间】:2016-10-30 00:41:50 【问题描述】:

在LEAN Stack Package 的 NPM 包管理器列表中,页面右上角显示了以下安装说明:

npm 安装精益堆栈

我需要它说:

npm install -g 精简堆栈

我已通读 package.json 文档,但找不到任何内容来说明这一点。我还在 package.json 中将 preferGlobal 变量设置为 true,这也没有任何区别。

【问题讨论】:

尽管您愿意,但软件包的安装类型(全局或其他)并不取决于您。您无权对开发人员施加这种限制。如果开发人员选择在本地安装你的包(推荐),你的包应该仍然可以工作。全局安装的包和源代码中的全局变量一样新奇。 是的,但以 express-generator 为例...它旨在在全球范围内使用。我不会称之为新手,我会称之为按设计运行。 不,express-generator 也很新奇。无论如何,这是题外话。任何知道-g 标志并希望使用它的 npm 用户都可以按照自己的意愿使用它。您无需将其推荐为默认设置。 严厉的政策。我们没有从 Xhtml 中学到东西吗? 引用 npm CEO 关于此功能请求 Yeah, we're never going to do this. 的内容,因此您应该在那里打开一个问题来讨论它,但目前,您根本不可能实现您想要的。 【参考方案1】:

无法做到,但要引起对全局安装选项的更多关注,您可以像此开发人员一样使用统计信息框:

【讨论】:

【参考方案2】:

为什么你不能

无法在 npmjs.com 中显示为 npm install packageName -g。你不能强迫人们将你的模块作为全局模块使用,实际上 npm 不建议使用全局模块,除非必要。

就像全局变量有点粗俗,但在某些情况下也是必要的一样,全局包很重要,但如果不需要,最好避免。

此外,如果您要部署到其他服务器等,即使是全局模块也会在本地使用以冻结包版本。

例如,使用 istanbul 进行测试覆盖,您可以在全局范围内使用该软件包,并且键入 istanbul test 更简单,但是在本地安装 istanbul 将冻结版本中的package.json 文件,以便在更新时保持其正常工作。

你本地安装,写node node_modules/istanbul/index.js test

伊斯坦布尔只是此处的一个示例用例。

显示警告:: preferGlobal

如果您的包主要是一个应该全局安装的命令行应用程序,则将此值设置为 true 以在本地安装时提供警告。

它实际上并不会阻止用户在本地安装它,但如果它不能按预期工作,它确实有助于防止一些混乱。

然而

设置preferGlobal: true 不足以在本地安装时触发警告。

为了获得消息,您必须检查以下清单:

    有效的 package.json 文件。

    package.json 文件中包含dependencies 对象(即使它是空的)

在这些情况下您不会看到此消息:

    如果你在一个非 npm 项目中(没有package.json)。

    如果你在一个 npm package-project 目录中,该目录恰好已经将包安装为本地依赖项。

来源:

    https://***.com/a/28206992/5384679

    https://github.com/npm/npm/issues/11652

    https://nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/

【讨论】:

OP 的问题不是关于npm install 正在运行时的警告,而是关于this page 显示使用-g 的安装命令。您的答案中与 OP 的问题有关的唯一部分是说将 preferGlobal 设置为 true 但 OP 在他们的问题中指出 OP 已经这样做了。跨度> @Louis 啊,好吧,这个问题有点误导,没有办法这么说,即使只有全局库在 npmjs 存储库中也没有这个。

以上是关于使 NPM 包管理器列表显示安装方向的全局标志的主要内容,如果未能解决你的问题,请参考以下文章

vue的安装

npm

三阶段课程——Day05(模块系统:自定义模块内置模块第三方模块;npm与包:包管路工具常用命令package.json包的分类包加载机制全局包)

可以在 VS 包管理器 UI 中显示预发布的 NuGet 包吗?

npm

npm学习笔记-修复npm权限问题