使用NPM将软件包更新到主要版本

时间:2018-02-21 09:06:52

标签: node.js npm updates semantic-versioning

Node.js项目中,我不清楚将软件包升级到主要版本的正确工作流程是什么。

假设我正在调用stylelintnpm install --save stylelint默认情况下将 package.json 放入字符串" stylelint":" ^ 8.4.1" 这意味着如果我想用npm update更新它,我将只获得次要和补丁版本(8.4.2没问题) ,8.5.0 in ok,9.0.0不是。)

如果我查看npm outdated并且我发现我可以更新到9.0.0,npm update由于上述限制而无法正常工作。

所以,如果我想升级,我该怎么办?

我是否要手动将 package.json 修改为stylelint版本^ 9.0.0,删除 node_modules 目录并重新运行npm install

或者我可能只是要移除^字符让npm update完成工作?

采用的常见/最佳做法是什么?

由于

2 个答案:

答案 0 :(得分:1)

最常见/最佳做法是永远不允许自动更新可能会发生变化的版本。工作流程遍布地图,来自;手动测试然后更新packages.json,以完全自动检测,测试,更新和提交packages.json。

由于缺乏并行版本控制支持,许多Java / JavaScript环境对传递依赖项更改特别敏感。如果你的软件包引入了一个自己的依赖项的重大变化,那么你的软件包已经引入了对系统的重大改变。如果您的1.y.z导致其中一个依赖项从X.Y.Z更新为X + 1.Y.Z,则会引入重大更改,因此不是稳定版本1.y.z.只要该软件包的开发人员发布了重大更改,其他依赖于与您的软件包名称相同的软件包名称的软件包可能会被破坏。永远不要让世界进入那个状态!

我建议你学习Diamond Dependency Problem并深入考虑。您应该始终仔细测试重大变化,不要试图强迫客户使用。

答案 1 :(得分:0)

  

那么,如果我想升级,该怎么办?

要更新主要版本,您可以使用npm-check-updates

看到这个很棒的answer