命令 "npm update" 与程序包 "npm-check-updates"
Command "npm update" vs package "npm-check-updates"
命令npm update
and the package npm-check-updates有什么区别?使用后者是否完全安全?
执行npm update
后好像没有更新所有的包,所以看起来不完整。许多其他popular SO answers指的是先使用先验命令然后再使用后者,但我仍然不明白后者做了什么而先验命令没有。
npm-check-updates
只会修改您的 package.json
文件。一旦您 运行 该命令,您将需要 运行 一个单独的 npm install
来获取这些更改。另一方面,npm update
将执行所有这些操作,并且不会让您有机会预先检查正在更新的内容。
曾经有一个烦恼是 npm update
没有更新 package.json
文件,但从 5.0.0 开始不再是这种情况。很久以前,它还查看了包依赖性,这给很多人带来了无穷无尽的问题。
两者之间的主要区别在于您可以 运行 ncu
(npm-check-updates
的别名)并且默认情况下,它不会更新您的包 - 只是告诉您需要更新哪些包。
例如,下面是我的一个遗留项目的输出。在这里,您可以看到一些 grunt
包已过期,主要是因为我不再从事该项目,更喜欢在 npm 中编写构建脚本,并且没有时间更新旧项目。
λ ncu
Checking D:\Github\XQSF_Master\web\package.json
[====================] 10/10 100%
grunt ^1.0.3 → ^1.0.4
grunt-contrib-clean ^1.0.0 → ^2.0.0
grunt-contrib-cssmin ^2.2.1 → ^3.0.0
grunt-contrib-uglify ^3.2.1 → ^4.0.1
grunt-sass ~2.0.0 → ~3.0.2
Run ncu -u to upgrade package.json
没有对我的项目进行任何更改 - 它只是告诉我需要更新的内容。这就是为什么我更喜欢npm-check-updates
。默认情况下,它不会进行任何更改。
如果您DO 想要由 ncu 进行更改,只需 运行 ncu -u
。这将更新您的 package.json
,但您仍然需要 运行 npm install
才能将 node_modules
文件夹更新为您的新包。
好吧,经过一些调查和大量错误信息后,我想我终于明白了。
npm-check-updates
将使用每个包的最新更新修改您的 package.json
文件,并且不遵守任何 npm semantic versioning,这意味着您的项目可能会中断。一旦您 运行 npm-check-updates
,您将需要 运行 一个单独的 npm install
来获取最新版本的这些更改。
另一方面,npm update
根据文件 package.json
.
中设置的 semantic versioning 将软件包更新到最新版本
例如,依赖项中的主要版本(3 位数版本中第一个数字的增加)进行的更改可能会破坏向后兼容性。如果您使用插入符号 ^
在 package.json
中设置该依赖项,命令 npm install
将不会更新主要版本,而 npm-check-updates
会。检查 npm 的这 5 分钟 video 因为它非常清楚。
晚会有点晚了,但我觉得之前接受的答案已经过时并且略有欠缺。
npm 提供什么
npm update
- updates the dependencies both in package.json and package-lock.json in accordance to the semantic version rules 定义在 package.json
.
npm update
的主要特点:
- 它将永远不会更新到一个中断版本。
- (npm@7 及以上)您可以选择只更新
package.json
文件 npm update --package-lock false
。但是,此标志将完全忽略 package-lock.json
,因此自动 p运行ing 无关模块也将被禁用。
- (npm@7 及更高版本)您可以看到更改
npm update
将使用标志 --dry-run
执行,而不会实际更新。
npm outdated
- 显示所有具有更新版本的包,这包括重大更改。
它打印一个 table,其中包括包、当前版本、想要的版本 - 根据 package.json
中的 semver 规则 - 最新版本和包的位置。
npm-check-updates 提供什么
运行 ncu
没有任何标志将打印所有过时包的列表以及它将更新到的版本,但不会应用任何更改。
ncu --update
- 仅将更改应用于 package.json
文件。它会将 package.json
中所有依赖项的版本更改为最新版本(即使是破坏版本!),但不会修改 package-lock.json
文件。为此,您需要 运行 npm install
.
ncu --target [patch, minor, latest, newest, greatest]
- 选择要list/update的版本类型。
npm 与 ncu
Feature
npm
ncu
Show Outdated Packages
npm outdated
- shows wanted & latest versions
ncu
- shows latest by default, can be customised
Update Packages
npm update
ncu -u
Breaking Versions
Never updates to a breaking version, but shows them in npm outdated
Updates to and shows breaking version by default, can be customised
package.json
SemVer Rules
npm outdated
shows the "wanted" version according to SemVer rules, updates to "wanted" version
Disregards SemVer rules, can be customised to update to different types of versions
Files Modified
Modifies package.json
and package-lock.json
and installs the updated modules
Modifies package.json
, doesn't change package-lock.json
and doesn't automatically install
Customisation
Can ignore package-lock.json
(npm@7) and choose which packages to update
Can choose what kind of version to update to (minor, patch, latest, greatest, newest) and which packages to update
命令npm update
and the package npm-check-updates有什么区别?使用后者是否完全安全?
执行npm update
后好像没有更新所有的包,所以看起来不完整。许多其他popular SO answers指的是先使用先验命令然后再使用后者,但我仍然不明白后者做了什么而先验命令没有。
npm-check-updates
只会修改您的 package.json
文件。一旦您 运行 该命令,您将需要 运行 一个单独的 npm install
来获取这些更改。另一方面,npm update
将执行所有这些操作,并且不会让您有机会预先检查正在更新的内容。
曾经有一个烦恼是 npm update
没有更新 package.json
文件,但从 5.0.0 开始不再是这种情况。很久以前,它还查看了包依赖性,这给很多人带来了无穷无尽的问题。
两者之间的主要区别在于您可以 运行 ncu
(npm-check-updates
的别名)并且默认情况下,它不会更新您的包 - 只是告诉您需要更新哪些包。
例如,下面是我的一个遗留项目的输出。在这里,您可以看到一些 grunt
包已过期,主要是因为我不再从事该项目,更喜欢在 npm 中编写构建脚本,并且没有时间更新旧项目。
λ ncu
Checking D:\Github\XQSF_Master\web\package.json
[====================] 10/10 100%
grunt ^1.0.3 → ^1.0.4
grunt-contrib-clean ^1.0.0 → ^2.0.0
grunt-contrib-cssmin ^2.2.1 → ^3.0.0
grunt-contrib-uglify ^3.2.1 → ^4.0.1
grunt-sass ~2.0.0 → ~3.0.2
Run ncu -u to upgrade package.json
没有对我的项目进行任何更改 - 它只是告诉我需要更新的内容。这就是为什么我更喜欢npm-check-updates
。默认情况下,它不会进行任何更改。
如果您DO 想要由 ncu 进行更改,只需 运行 ncu -u
。这将更新您的 package.json
,但您仍然需要 运行 npm install
才能将 node_modules
文件夹更新为您的新包。
好吧,经过一些调查和大量错误信息后,我想我终于明白了。
npm-check-updates
将使用每个包的最新更新修改您的 package.json
文件,并且不遵守任何 npm semantic versioning,这意味着您的项目可能会中断。一旦您 运行 npm-check-updates
,您将需要 运行 一个单独的 npm install
来获取最新版本的这些更改。
另一方面,npm update
根据文件 package.json
.
例如,依赖项中的主要版本(3 位数版本中第一个数字的增加)进行的更改可能会破坏向后兼容性。如果您使用插入符号 ^
在 package.json
中设置该依赖项,命令 npm install
将不会更新主要版本,而 npm-check-updates
会。检查 npm 的这 5 分钟 video 因为它非常清楚。
晚会有点晚了,但我觉得之前接受的答案已经过时并且略有欠缺。
npm 提供什么
npm update
- updates the dependencies both in package.json and package-lock.json in accordance to the semantic version rules 定义在 package.json
.
npm update
的主要特点:
- 它将永远不会更新到一个中断版本。
- (npm@7 及以上)您可以选择只更新
package.json
文件npm update --package-lock false
。但是,此标志将完全忽略package-lock.json
,因此自动 p运行ing 无关模块也将被禁用。 - (npm@7 及更高版本)您可以看到更改
npm update
将使用标志--dry-run
执行,而不会实际更新。
npm outdated
- 显示所有具有更新版本的包,这包括重大更改。
它打印一个 table,其中包括包、当前版本、想要的版本 - 根据 package.json
中的 semver 规则 - 最新版本和包的位置。
npm-check-updates 提供什么
运行 ncu
没有任何标志将打印所有过时包的列表以及它将更新到的版本,但不会应用任何更改。
ncu --update
- 仅将更改应用于 package.json
文件。它会将 package.json
中所有依赖项的版本更改为最新版本(即使是破坏版本!),但不会修改 package-lock.json
文件。为此,您需要 运行 npm install
.
ncu --target [patch, minor, latest, newest, greatest]
- 选择要list/update的版本类型。
npm 与 ncu
Feature | npm | ncu |
---|---|---|
Show Outdated Packages | npm outdated - shows wanted & latest versions |
ncu - shows latest by default, can be customised |
Update Packages | npm update |
ncu -u |
Breaking Versions | Never updates to a breaking version, but shows them in npm outdated |
Updates to and shows breaking version by default, can be customised |
package.json SemVer Rules |
npm outdated shows the "wanted" version according to SemVer rules, updates to "wanted" version |
Disregards SemVer rules, can be customised to update to different types of versions |
Files Modified | Modifies package.json and package-lock.json and installs the updated modules |
Modifies package.json , doesn't change package-lock.json and doesn't automatically install |
Customisation | Can ignore package-lock.json (npm@7) and choose which packages to update |
Can choose what kind of version to update to (minor, patch, latest, greatest, newest) and which packages to update |