你应该能够使用
npm update
来实现你想要的。具体操作略有不同,取决于你是否使用
npm
7.x或
npm
6.x。我正在使用7.x,所以以下就是我展示的内容。
假设
npm audit
生成了如下输出:
minimist <0.2.1 || >=1.0.0 <1.2.3
Prototype Pollution - https://npmjs.com/advisories/1179
fix available via `npm audit fix`
node_modules/extract-zip/node_modules/minimist
mkdirp 0.4.1 - 0.5.1
Depends on vulnerable versions of minimist
node_modules/extract-zip/node_modules/mkdirp
extract-zip <=1.6.7
Depends on vulnerable versions of mkdirp
node_modules/extract-zip
3 low severity vulnerabilities
To address all issues, run:
npm audit fix
这表明我们需要更新
minimist
,
mkdirp
和
extract-zip
。
让我们运行
npm ls
以了解我们正在处理的版本和依赖关系。
$ npm ls minimist mkdirp extract-zip
scrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text
├─┬ puppeteer@2.1.1
│ └─┬ extract-zip@1.6.7
│ └─┬ mkdirp@0.5.1
│ └── minimist@0.0.8
└─┬ semistandard@14.2.0
├─┬ eslint@6.4.0
│ ├─┬ file-entry-cache@5.0.1
│ │ └─┬ flat-cache@2.0.1
│ │ └─┬ write@1.0.3
│ │ └── mkdirp@0.5.3 deduped
│ └─┬ mkdirp@0.5.3
│ └── minimist@1.2.5 deduped
└─┬ standard-engine@12.0.0
└── minimist@1.2.5
$
因为着色相当重要,这是最后一个的屏幕截图:
![Screenshot of the previous text output to show colorization highlighting of the modules we care about Screenshot of the previous text output to show colorization highlighting of the modules we care about](https://istack.dev59.com/X3pXp.webp)
让我们看看如果我们运行npm update minimist
来更新该软件包会发生什么。让我们使用npm ls minimist
查看是否有任何更改。(您还可以查看package-lock.json
文件是否更改并进行差异比较。)
$ npm ls minimist
scrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text
├─┬ puppeteer@2.1.1
│ └─┬ extract-zip@1.6.7
│ └─┬ mkdirp@0.5.1
│ └── minimist@0.0.8
└─┬ semistandard@14.2.0
├─┬ eslint@6.4.0
│ └─┬ mkdirp@0.5.3
│ └── minimist@1.2.5 deduped
└─┬ standard-engine@12.0.0
└── minimist@1.2.5
$
没有变化。我们仍然拥有之前的相同版本。好的,让我们尝试下一个,即mkdirp
。
$ npm update mkdirp
changed 1 package, and audited 244 packages in 1s
3 low severity vulnerabilities
To address all issues, run:
npm audit fix
Run `npm audit` for details.
$
changed 1 package
看起来很有希望。让我们看看它做了什么:
$ npm ls mkdirp
scrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text
├─┬ puppeteer@2.1.1
│ └─┬ extract-zip@1.6.7
│ └── mkdirp@0.5.1
└─┬ semistandard@14.2.0
└─┬ eslint@6.4.0
├─┬ file-entry-cache@5.0.1
│ └─┬ flat-cache@2.0.1
│ └─┬ write@1.0.3
│ └── mkdirp@0.5.5 deduped
└── mkdirp@0.5.5
这个更新将 mkdirp
更新到了0.5.5版本。您可以测试一下,看看是否仍然正常工作。
如果现在执行 npm update extract-zip
,那么会得到一个干净的 npm audit
运行结果。
希望这能让您了解如何逐个更新软件包而不在过程中修改 package.json
文件。祝好运!
package.json
,那就更好了。我相信这是制作一个 "minimal, complete, and verifiable example" (MCVE) 所需的全部内容。 - Henkeminimist
的问题吗? - undefinedmkdirp
和extract-zip
都依赖于minimist
。如果只更新minimist
而不更新这两个包是行不通的,因为旧版本的mkdirp
和extract-zip
限制了可以安装的新版本minimist
的范围。通过更新这些其他包,minimist
也会得到更新。 - undefined