如何手动“npm 审核修复”单个安全问题?

Svi*_*ish 23 npm package.json npm-audit

我报告了许多问题npm audit,通过运行npm audit fix它确实修复了其中几个问题。然而,这样做也会由于某种原因破坏我的构建。我想我知道哪个修复导致了问题,但我仍然想修复其他问题

有没有办法让 npm 在我运行时做任何事情npm audit fix,但仅限于单个问题/依赖项?


我知道我运行了npm i,但这也添加了更新的依赖项package.json(即使带有--package-lock-only标志),这是我不想要的。我只希望 npm 更新package-lock.json,就像我运行时一样npm audit fix,但只是针对选定的问题子集。

Tro*_*ott 37

您应该能够npm update在这里实现您想要的目的。根据您使用的是npm7.x 还是npm6.x ,具体操作略有不同。我使用的是 7.x,所以这就是我下面显示的。

\n

假设npm audit产生这样的输出:

\n
# npm audit report\n\nminimist  <0.2.1 || >=1.0.0 <1.2.3\nPrototype Pollution - https://npmjs.com/advisories/1179\nfix available via `npm audit fix`\nnode_modules/extract-zip/node_modules/minimist\n  mkdirp  0.4.1 - 0.5.1\n  Depends on vulnerable versions of minimist\n  node_modules/extract-zip/node_modules/mkdirp\n    extract-zip  <=1.6.7\n    Depends on vulnerable versions of mkdirp\n    node_modules/extract-zip\n\n3 low severity vulnerabilities\n\nTo address all issues, run:\n  npm audit fix\n
Run Code Online (Sandbox Code Playgroud)\n

这表明我们需要更新minimistmkdirp、 和extract-zip

\n

让我们了解npm ls一下我们正在处理的版本和依赖项。

\n
$ npm ls minimist mkdirp extract-zip  \nscrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac puppeteer@2.1.1\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac extract-zip@1.6.7\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac mkdirp@0.5.1\n\xe2\x94\x82     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 minimist@0.0.8\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac semistandard@14.2.0\n  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac eslint@6.4.0\n  \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac file-entry-cache@5.0.1\n  \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac flat-cache@2.0.1\n  \xe2\x94\x82 \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac write@1.0.3\n  \xe2\x94\x82 \xe2\x94\x82     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mkdirp@0.5.3 deduped\n  \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac mkdirp@0.5.3\n  \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 minimist@1.2.5 deduped\n  \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac standard-engine@12.0.0\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 minimist@1.2.5\n\n$ \n
Run Code Online (Sandbox Code Playgroud)\n

因为着色很重要,所以这是最后一张的屏幕截图:

\n

先前文本输出的屏幕截图,显示我们关心的模块的彩色突出显示

\n

让我们看看如果我们运行npm update minimist来更新该包会发生什么。让我们npm ls minimist看看是否有任何变化。(您还可以查看package-lock.json文件是否更改并进行比较。)

\n
$ npm ls minimist\nscrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac puppeteer@2.1.1\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac extract-zip@1.6.7\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac mkdirp@0.5.1\n\xe2\x94\x82     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 minimist@0.0.8\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac semistandard@14.2.0\n  \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac eslint@6.4.0\n  \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac mkdirp@0.5.3\n  \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 minimist@1.2.5 deduped\n  \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac standard-engine@12.0.0\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 minimist@1.2.5\n\n$ \n
Run Code Online (Sandbox Code Playgroud)\n

不,没有改变。我们仍然拥有之前的相同版本。好的,让我们尝试下一个,即mkdirp.

\n
$ npm update mkdirp\n\nchanged 1 package, and audited 244 packages in 1s\n\n3 low severity vulnerabilities\n\nTo address all issues, run:\n  npm audit fix\n\nRun `npm audit` for details.\n$\n
Run Code Online (Sandbox Code Playgroud)\n

changed 1 package看起来很有希望。让我们看看它做了什么:

\n
$ npm ls mkdirp    \nscrape-text@1.0.0 /Users/trott/ucsf-ckm/scrape-text\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac puppeteer@2.1.1\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac extract-zip@1.6.7\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mkdirp@0.5.1\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\xac semistandard@14.2.0\n  \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac eslint@6.4.0\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xac file-entry-cache@5.0.1\n    \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac flat-cache@2.0.1\n    \xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\xac write@1.0.3\n    \xe2\x94\x82     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mkdirp@0.5.5 deduped\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mkdirp@0.5.5\n\n
Run Code Online (Sandbox Code Playgroud)\n

已更新mkdirp至 0.5.5。您可以对其进行测试,看看是否仍然有效。

\n

如果你现在这样做npm update extract-zip,将会得到一个干净的结果npm audit运行。

\n

希望这能让您了解如何一次更新一个包而不package.json在此过程中进行修改。祝你好运!

\n