如何使用npm审计全局软件包

rnmwe5a2  于 2022-11-14  发布在  其他
关注(0)|答案(4)|浏览(164)

正如官方npm文档中所述,您可以在本地安装的软件包上手动运行npm audit,这些软件包必须同时包含package.jsonpackage-lock.json文件。
全局安装的软件包没有package-lock.json,如果您运行审计,它将引发错误:npm ERR! code EAUDITNOLOCK
如何在所有全局安装的软件包上运行npm audit

w7t8yxp5

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上的更多信息。

5cg8jx4n

5cg8jx4n2#

我找到了你问题的答案:
1.转到全局npm文件夹(例如cd $(npm root -g)/..)。

  1. npm init只需在问题前按下回车键,或者npm init -y,这样它就会被填充默认值。这将给予你一个npm audit需要的package.json,并自动将node_modules中的内容添加到它。
  2. npm i --package-lock-only将根据需要进行安装,并添加package-lock.json(npm审计所需)。
    1.运行npm audit
    要找到全局npm文件夹,只需运行npm root -g,它会在最后打印出来。package.json文件需要在其父文件夹中。
7cwmlq89

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
wgmfuz8q

wgmfuz8q4#

还有一个有趣的方法可以审计全局包,而不使用第三方包,毕竟我们不想违反安全原则,把它们用在如此敏感的数据上;).
您可能需要以管理权限运行终端(bash或类似的Unix系统或cmd Windows系统)以获得正确的结果。
1.使用此命令确定全局安装的软件包的路径和列表:

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文件:

npm i --package-lock-only

1.运行审核

npm audit

它至少在我的Windows 8.1系统上对我有效,运行节点v.16.13.2,npm v.8.4.1。
有趣的是,我的报告中有一个中等严重性的漏洞。
如果你能分享你的经验和我建议的解决问题的方法,我将不胜感激。

相关问题