正如官方npm文档中所述,您可以在本地安装的软件包上手动运行npm audit,这些软件包必须同时包含package.json和package-lock.json文件。全局安装的软件包没有package-lock.json,如果您运行审计,它将引发错误:npm ERR! code EAUDITNOLOCK个如何在所有全局安装的软件包上运行npm audit?
npm audit
npm ERR! code EAUDITNOLOCK
w7t8yxp51#
最好让它们保持最新状态
存在npm-check-updates或者npm-check
npm install -g npm-check-updates
检查过期的全局软件包:
ncu -g
或
如@pldg通过npx推荐的
npx npm-check-updates -g
由@ wheredidthatnamecome from推荐
npx npm-global-audit
这是一个用yarn运行的脚本。它会临时复制你当前的全局包。请查看他们的github上的更多信息。
5cg8jx4n2#
我找到了你问题的答案:1.转到全局npm文件夹(例如cd $(npm root -g)/..)。
cd $(npm root -g)/..
npm init
npm init -y
npm i --package-lock-only
npm root -g
package.json
7cwmlq893#
# 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
wgmfuz8q4#
还有一个有趣的方法可以审计全局包,而不使用第三方包,毕竟我们不想违反安全原则,把它们用在如此敏感的数据上;).您可能需要以管理权限运行终端(bash或类似的Unix系统或cmd Windows系统)以获得正确的结果。1.使用此命令确定全局安装的软件包的路径和列表:
bash
cmd
npm i
你应该得到这样的东西:
C:\Program Files\nodejs -> .\ ├── gulp-cli@2.3.0 ├── nodemon@2.0.15 ├── npm@8.4.1 └── ts-node@10.5.0
1.使用您的终端转到该路径。请记住,该路径可能是指向另一个文件夹的链接(或符号链接)。1.在该文件夹中创建一个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本身也包括在内。1.使用以下cli命令在其中创建一个package-lock.json文件:
package-lock.json
1.运行审核
它至少在我的Windows 8.1系统上对我有效,运行节点v.16.13.2,npm v.8.4.1。有趣的是,我的报告中有一个中等严重性的漏洞。如果你能分享你的经验和我建议的解决问题的方法,我将不胜感激。
4条答案
按热度按时间w7t8yxp51#
最好让它们保持最新状态
存在npm-check-updates或者npm-check
检查过期的全局软件包:
或
如@pldg通过npx推荐的
或
由@ wheredidthatnamecome from推荐
这是一个用yarn运行的脚本。它会临时复制你当前的全局包。请查看他们的github上的更多信息。
5cg8jx4n2#
我找到了你问题的答案:
1.转到全局npm文件夹(例如
cd $(npm root -g)/..
)。npm init
只需在问题前按下回车键,或者npm init -y
,这样它就会被填充默认值。这将给予你一个npm audit需要的package.json,并自动将node_modules中的内容添加到它。npm i --package-lock-only
将根据需要进行安装,并添加package-lock.json(npm审计所需)。1.运行
npm audit
。要找到全局npm文件夹,只需运行
npm root -g
,它会在最后打印出来。package.json
文件需要在其父文件夹中。7cwmlq893#
wgmfuz8q4#
还有一个有趣的方法可以审计全局包,而不使用第三方包,毕竟我们不想违反安全原则,把它们用在如此敏感的数据上;).
您可能需要以管理权限运行终端(
bash
或类似的Unix系统或cmd
Windows系统)以获得正确的结果。1.使用此命令确定全局安装的软件包的路径和列表:
你应该得到这样的东西:
1.使用您的终端转到该路径。请记住,该路径可能是指向另一个文件夹的链接(或符号链接)。
1.在该文件夹中创建一个
package.json
文件,其内容反映全局软件包列表以及您在步骤1中获得的确切版本,如下所示:请注意,npm本身也包括在内。
1.使用以下cli命令在其中创建一个
package-lock.json
文件:1.运行审核
它至少在我的Windows 8.1系统上对我有效,运行节点v.16.13.2,npm v.8.4.1。
有趣的是,我的报告中有一个中等严重性的漏洞。
如果你能分享你的经验和我建议的解决问题的方法,我将不胜感激。