dad*_*ade 5 security node.js npm npm-shrinkwrap
我有一个 monorepo 项目,其中一个包是 cli。为了防止 npm 供应链攻击,我正在考虑使用npm-shrinkwrap.
这里的文档说:
npm-shrinkwrap.json 的推荐用例是通过注册表上的发布过程部署的应用程序:例如,用作全局安装或 devDependency 的守护程序和命令行工具
这正是我在部署命令行工具时想要的。唯一的问题是,npm-shrinkwrap 似乎不支持工作区。
假设我的 monorepo 的 cli 部分可以在路径中找到:/code/packages/cli,当我切换到它并运行时,npm shrinkwrap我收到错误:
npm ERR! code ENOWORKSPACES
npm ERR! This command does not support workspaces.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/me/.npm/_logs/2022-05-16T20_53_41_147Z-debug-0.log
Run Code Online (Sandbox Code Playgroud)
如果我切换到项目的根目录,即/code/运行npm shrinkwrap,它会生成npm-shrinkwrap.json具有以下结构的:
{
"name": "root",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "root",
"version": "1.0.0",
"license": "ISC",
"workspaces": [
"packages/*"
],
"devDependencies": {
"lerna": "^4.0.0"
}
},
"packages/cli": {
"name": "@proj/cli",
"version": "1.0.0",
"extraneous": true,
"license": "ISC"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但唯一的问题是,这不是应该为cli. 另外,当我发布包(使用 lerna)时,它npm-shrinkwrap.json从未包含在cli包中。
关于如何使 npm-shrinkwrap 与工作区一起工作有什么建议吗?
基本上如何npm-shrinkwrap.json在 monorepo 中生成包并在发布该包时将其包含在内?
for*_*all -1
该工具npm-lockfile使用 npm 的内部结构并在 monorepos 内部工作。
不幸的是,他们使用的是旧版本@npm/arborist,所以它不能正常工作,你现在可以使用我的补丁
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |