命令npm update
和软件包npm-check-updates有什么区别?使用后者是否完全安全?
似乎在执行npm update
之后,并非所有软件包都已更新,因此似乎不完整。许多其他popular SO answers都先使用先验命令,然后再使用后者,但我仍然不理解后者先做而后先没有做。
答案 0 :(得分:1)
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
。默认情况下,它不会进行任何更改。
如果您要做要由ncu进行更改,只需运行ncu -u
。这将更新您的package.json
,但是您仍然需要运行npm install
,将node_modules
文件夹更新为新软件包。