使用 NPM 将包更新到主要版本
Update package to a major release with NPM
在 Node.js 项目中,我不清楚将包升级到主要版本的正确工作流程是什么。
假设我正在安装 stylelint:npm install --save stylelint
默认情况下将 package.json 字符串 "stylelint": "^8.4.1" 这意味着如果我想用 npm update
更新它,我将只获得次要版本和补丁版本(8.4.2 可以,8.5.0好的,9.0.0 不是)。
如果我检查 npm outdated
并发现我可以更新到 9.0.0,npm update
将无法工作,因为上面描述的限制。
那么,如果我想升级,我应该怎么做?
要我手动修改我的package.json到stylelint版本^9.0.0,删除node_modules目录并重新运行 npm install
?
或者也许我只需要删除 ^
字符让 npm update
完成它的工作?
要采用的 common/best 做法是什么?
谢谢
Or maybe I have just to remove the ^ character to let npm update do its job?
What is the common/best practice to adopt?
最 common/best 的做法是永远不允许自动更新具有潜在破坏性更改的版本。工作流程无处不在,来自;手动测试然后更新 packages.json,以全自动检测、测试、更新和提交 packages.json。
许多 Java/JavaScript 环境由于缺乏并行版本控制支持而对传递依赖性更改特别敏感。如果您的包对其自身的依赖项之一进行了重大更改,那么您的包已对系统进行了重大更改。如果您的 1.y.z 导致其依赖项之一从 X.Y.Z 更新到 X+1.Y.Z,它会引入重大更改,因此不是稳定版本 1.y.z。每当该软件包的开发人员发布重大更改时,其他依赖于与您的软件包名称相同的软件包的软件包可能会被破坏。永远不要让世界进入那种状态!
我建议您学习 Diamond Dependency Problem 并牢记于心。您应该始终仔细测试重大更改,切勿试图将它们强加给您的客户。
正如@ShaharShokrani 所指出的,这个answer gives a good workflow for manually updating your package. And to remain in compliance with SemVer 2.0.0 #8,别忘了增加你自己的主要版本号。
So, if I want to upgrade, what am I supposed to do?
要更新主要版本,您可以使用 npm-check-updates
。
看到这个很棒answer。
假设您安装了 3.x 版本的“the-package”并想升级到 5.x
你会这样做:
npm install the-package@5
它也会更新 package.json 和 package-lock.json。
您也可以删除并安装软件包。
npm rm package
npm i package
在 Node.js 项目中,我不清楚将包升级到主要版本的正确工作流程是什么。
假设我正在安装 stylelint:npm install --save stylelint
默认情况下将 package.json 字符串 "stylelint": "^8.4.1" 这意味着如果我想用 npm update
更新它,我将只获得次要版本和补丁版本(8.4.2 可以,8.5.0好的,9.0.0 不是)。
如果我检查 npm outdated
并发现我可以更新到 9.0.0,npm update
将无法工作,因为上面描述的限制。
那么,如果我想升级,我应该怎么做?
要我手动修改我的package.json到stylelint版本^9.0.0,删除node_modules目录并重新运行 npm install
?
或者也许我只需要删除 ^
字符让 npm update
完成它的工作?
要采用的 common/best 做法是什么?
谢谢
Or maybe I have just to remove the ^ character to let npm update do its job?
What is the common/best practice to adopt?
最 common/best 的做法是永远不允许自动更新具有潜在破坏性更改的版本。工作流程无处不在,来自;手动测试然后更新 packages.json,以全自动检测、测试、更新和提交 packages.json。
许多 Java/JavaScript 环境由于缺乏并行版本控制支持而对传递依赖性更改特别敏感。如果您的包对其自身的依赖项之一进行了重大更改,那么您的包已对系统进行了重大更改。如果您的 1.y.z 导致其依赖项之一从 X.Y.Z 更新到 X+1.Y.Z,它会引入重大更改,因此不是稳定版本 1.y.z。每当该软件包的开发人员发布重大更改时,其他依赖于与您的软件包名称相同的软件包的软件包可能会被破坏。永远不要让世界进入那种状态!
我建议您学习 Diamond Dependency Problem 并牢记于心。您应该始终仔细测试重大更改,切勿试图将它们强加给您的客户。
正如@ShaharShokrani 所指出的,这个answer gives a good workflow for manually updating your package. And to remain in compliance with SemVer 2.0.0 #8,别忘了增加你自己的主要版本号。
So, if I want to upgrade, what am I supposed to do?
要更新主要版本,您可以使用 npm-check-updates
。
看到这个很棒answer。
假设您安装了 3.x 版本的“the-package”并想升级到 5.x
你会这样做:
npm install the-package@5
它也会更新 package.json 和 package-lock.json。
您也可以删除并安装软件包。
npm rm package
npm i package