该命令和npm-check-updatesnpm update包有什么区别?使用后者是否完全安全?
执行后似乎npm update并不是所有的包都被更新,因此它看起来不完整。许多其他流行的 SO 答案都提到首先使用先前的命令,然后使用后者,但我仍然不明白后者做了什么而先验命令没有。
Eld*_* B. 14
参加聚会有点晚了,但我觉得之前接受的答案已经过时并且略有缺乏。
npm update-根据中定义的语义版本规则更新package.json和 package-lock.json 中的依赖项。package.json
主要特点npm update:
package.json更新npm update --package-lock false. 然而,该标志将完全忽略package-lock.json,因此无关模块的自动修剪也将被禁用。npm update将使用 flag 执行--dry-run,而无需实际更新。npm outdated- 显示具有可用更新版本的所有软件包,这包括重大更改。它打印一个表格,其中包括包、当前版本、所需版本(根据 中的 semver 规则)package.json、最新版本和包的位置。
不带任何标志运行ncu将打印所有过时软件包及其要更新到的版本的列表,但不会应用任何更改。
ncu --updatepackage.json-仅将更改应用于文件。它将把所有依赖项的版本更改为package.json最新版本(即使它是一个破坏版本!),但不会修改文件package-lock.json。为此,您需要运行npm install.
ncu --target [patch, minor, latest, newest, greatest]- 选择要列出/更新的版本类型。
| 特征 | 新项目管理 | 国立大学 |
|---|---|---|
| 显示过时的软件包 | npm outdated- 显示想要的和最新的版本 |
ncu- 默认显示最新,可定制 |
| 更新包 | npm update |
ncu -u |
| 突破版本 | 从不更新到破坏版本,但将其显示在npm outdated |
默认更新并显示破坏版本,可以定制 |
package.json语义版本规则 |
npm outdated根据 SemVer 规则显示“想要”版本,更新为“想要”版本 |
忽略 SemVer 规则(除非明确指定),可以自定义更新到不同类型的版本 |
| 文件修改 | 修改package.json并package-lock.json安装更新的模块 |
修改package.json、不更改package-lock.json且不自动安装 |
| 定制化 | 可以忽略package-lock.json(npm@7) 并选择要更新的包 |
可以选择要更新到哪种版本(次要版本、补丁版本、最新版本、最大版本、最新版本)以及要更新的软件包 |
npm-check-updates只会修改你的package.json文件。运行该命令后,您将需要运行单独的命令npm install来获取这些更改。另一方面,npm update将执行所有这些操作,并且不会让您有机会事先检查正在更新的内容。
以前有一个npm update不更新的烦恼package.json文件,但从 5.0.0 开始,情况不再如此。早在那时,它还研究了包依赖关系,这给很多人带来了无穷无尽的问题。
两者之间的主要区别在于您可以运行ncu(别名为npm-check-updates),并且默认情况下,它不会更新您的包 - 只是告诉您需要更新哪些包。
例如,下面是我的一个遗留项目的输出。在这里,你可以看到一些grunt包已经过时了,主要是因为我不再从事这个项目,更喜欢在 npm 中编写构建脚本,并且没有时间更新旧项目。
\xce\xbb ncu\nChecking D:\\Github\\XQSF_Master\\web\\package.json\n[====================] 10/10 100%\n\n grunt ^1.0.3 \xe2\x86\x92 ^1.0.4\n grunt-contrib-clean ^1.0.0 \xe2\x86\x92 ^2.0.0\n grunt-contrib-cssmin ^2.2.1 \xe2\x86\x92 ^3.0.0\n grunt-contrib-uglify ^3.2.1 \xe2\x86\x92 ^4.0.1\n grunt-sass ~2.0.0 \xe2\x86\x92 ~3.0.2\n\nRun ncu -u to upgrade package.json\nRun Code Online (Sandbox Code Playgroud)\n\n我的项目没有进行任何更改 - 它只是告诉我需要更新什么。这就是为什么我更喜欢npm-check-updates。默认情况下,它不会进行任何更改。
如果您确实希望 ncu 进行更改,只需运行ncu -u。这将更新您的package.json,但您仍然需要npm install运行node_modules文件夹才能更新到您的新包。
| 归档时间: |
|
| 查看次数: |
12651 次 |
| 最近记录: |