首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在工作空间中使用npm-收缩包装?

如何在工作空间中使用npm-收缩包装?
EN

Stack Overflow用户
提问于 2022-05-16 20:57:33
回答 1查看 202关注 0票数 3

我有一个monorepo项目,其中一个包是cli。为了防止npm供应链的攻击,我正在考虑使用npm-shrinkwrap

文档这里说:

推荐的npm-缩缩包装.case用例是通过注册表上的发布过程部署的应用程序:例如,用作全局安装或devDependencies的守护进程和命令行工具。

这正是我在部署命令行工具时想要的。唯一的问题是,npm-收缩包装似乎不支持工作空间.

假设我的monorepo的cli部分可以在路径中找到:/code/packages/cli,当我切换到它并运行npm shrinkwrap时,会得到错误:

代码语言:javascript
复制
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

如果切换到项目的根,即/code/并运行npm shrinkwrap,它将生成具有以下结构的npm-shrinkwrap.json

代码语言:javascript
复制
{
  "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"
    }
  }
}

但唯一的问题是,这不是应该为cli创建的确切结构。此外,当我发布包(使用lerna)时,npm-shrinkwrap.json从未包含在cli包中。

关于如何使npm收缩包装与工作区一起工作有什么建议吗?

基本上,如何在单个程序包中生成包的npm-shrinkwrap.json,并在该包发布时将其嵌入其中?

EN

回答 1

Stack Overflow用户

发布于 2022-07-25 17:21:24

该工具npm-lockfile使用npm的内部结构,并在monorepos中工作。

不幸的是,他们使用的是旧版本的@npm/arborist,因此它不能正常工作,您现在可以使用我的补丁

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72265540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档