【发布时间】:2022-02-08 05:38:43
【问题描述】:
正如官方npm documentation 中所说,您可以在本地安装的包上手动运行npm audit,该包必须同时具有 package.json 和 package-lock.json文件。
全局安装的包没有package-lock.json,如果你运行审计它会抛出一个错误:npm ERR! code EAUDITNOLOCK
如何在所有全局安装的包上运行npm audit?
【问题讨论】:
标签: npm
正如官方npm documentation 中所说,您可以在本地安装的包上手动运行npm audit,该包必须同时具有 package.json 和 package-lock.json文件。
全局安装的包没有package-lock.json,如果你运行审计它会抛出一个错误:npm ERR! code EAUDITNOLOCK
如何在所有全局安装的包上运行npm audit?
【问题讨论】:
标签: npm
最好让它们保持最新状态。
这并不是真正的审计,但是使用尽可能少的全局包,这应该足够了。
npm install -g npm-check-updates
检查过时的全局包:
ncu -g
或
@pldg 通过 npx 推荐
npx npm-check-updates -g
或
由@wheredidthatnamecomefrom 推荐
npx npm-global-audit
这是一个使用 yarn 运行的脚本。它会临时复制您当前的全局包。在他们的github 上查看更多信息。
【讨论】:
npx npm-check-updates -g
我找到了您问题的答案:
npm init 只需按回车键进入问题,或npm init -y 以填充默认值。这将为您提供 npm audit 需要的 package.json,并自动将 node_modules 中的内容添加到其中。npm i --package-lock-only 将在需要时安装并添加 package-lock.json(npm 审计需要)。npm audit :)要查找您的全局 npm 文件夹,只需运行 npm,它会在最后打印出来。
【讨论】:
npm audit。我的问题是:如何直接对全局安装的软件包进行审核?也许是不可能的......
npm audit 完成。
# Without installing the package locally, using npx
npx npm-check-updates -g
# otherwise, install and update on occasion
npm install -g npm-check-updates
# Then check outdated global packages:
ncu -g
【讨论】:
嗯,还有另一种有趣的方式来审核全局包,而无需使用某些第三方包。毕竟,我们不想通过在如此敏感的数据上使用它们来违反安全原则;)。
您可能需要以管理权限运行终端(bash 或类似 Unix 的系统或 cmd 在 Windows 上)以获得正确的结果。
npm i
你应该得到这样的东西:
C:\Program Files\nodejs -> .\
├── gulp-cli@2.3.0
├── nodemon@2.0.15
├── npm@8.4.1
└── ts-node@10.5.0
使用您的终端转到该路径。请记住,此路径可能通过链接(或符号链接)指向另一个文件夹。
在该文件夹中创建一个 package.json 文件,其中包含反映全局包列表和您在第 1 步中获得的确切版本的内容,如下所示:
{
"name": "-",
"version": "0.0.1",
"dependencies": {
"gulp-cli": "2.3.0",
"nodemon": "2.0.15",
"npm": "8.4.1",
"ts-node": "10.5.0"
}
}
注意 npm 本身也包含在内。
package-lock.json 文件:npm i --package-lock-only
npm audit
它至少在我的 Windows 8.1 系统上对我有用,运行 node v.16.13.2,npm v.8.4.1。
有趣的是,我的报告中有一个针对 npm 本身的中等严重性漏洞。
如果您能按照我建议的解决问题的方式分享您的经验,我将不胜感激。
【讨论】: