【问题标题】:JS: nvmrc vs package.json engines?JS:nvmrc 与 package.json 引擎?
【发布时间】:2020-08-07 18:11:04
【问题描述】:

我正在尝试在我的 javascript 项目中锁定节点和 npm 版本,以确保其他开发人员在构建要提交的捆绑包时拥有这些特定版本。我刚刚将它添加到我的 package.json 中:

  "engineStrict" : true,
  "engines": {
    "node" : "10.10.0",
    "npm" : "6.5.0"
  },

这会最终强制执行这些版本吗?我不熟悉锁定版本,因为我曾经是前端项目的唯一开发人员或继承已设置此设置的项目。
或者,添加一个指定相同版本的.nvmrc 文件是否有好处,或者如果我使用引擎,那是否是多余的?

【问题讨论】:

标签: javascript node.js npm package.json


【解决方案1】:

执行 Node.js 版本

engineStrict 自 npm v3 起已弃用,但您可以在 .npmrc 文件中设置 engine-strict=true。如果你在 package.json 中设置了engines,当有人在不支持的 Node.js 版本上安装时会抛出错误。

.nvmrc 方便开发者

为了让其他开发人员更容易使用受支持的 Node.js 版本,您可以添加一个 .nvmrc 文件。现在其他开发者可以运行nvm use 来自动使用支持的版本。

【讨论】:

  • 谢谢@elias。我假设如果我走 .nvmrc 路线而不是使用引擎,我不能指定 npm 版本,对吧?
  • 你不需要选择:)。它们相辅相成:package.json + .npmrc 强制执行版本,.nvmrc 使其他人更容易使用正确的版本。
  • 所以我很清楚......如果我正在编写一个我希望其他人安装的模块,我会在我的 package.json 中设置“engines”字段。如果我是一个使用 dep 并且 dep 设置他们的引擎字段的应用程序,那么我只需要在 .npmrc 中设置引擎严格配置。 IE 在 package.json 中设置未在其他地方用作 dep 的引擎字段,似乎没有任何价值。如果我在我的应用程序中将“引擎”设置为节点 12,我可以在节点 8 中运行我的所有包脚本......并且没有任何抱怨
猜你喜欢
  • 2020-07-19
  • 2019-01-06
  • 1970-01-01
  • 2014-04-11
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
相关资源
最近更新 更多