纱线工作区也适用于npm吗?

时间:2017-10-26 06:48:51

标签: npm package.json yarnpkg

我检查了一个使用纱线代替npm作为构建工具的仓库。

在package.json中,它定义了处理多个子项目的工作空间:

{
  "workspaces": [
    "packages/*"
  ],
  "dependencies": [],
  "devDependencies": [
    // long list
  ]
}

因此,根package.json不包含任何运行时依赖项。只有packages/*/package.json包含那些。

要编译(并以开发模式启动),我会这样做:

yarn install
yarn start

我没有找到任何文档,workspaces也被npm识别并正确使用。

有没有办法让它与npm一起使用?

5 个答案:

答案 0 :(得分:15)

npm计划在v7的某个地方实现workspaces。他们在博客中written about it,有an accepted proposal

答案 1 :(得分:13)

npm不支持在monorepo中管理依赖关系。 Lerna包用于管理具有交叉依赖性的JavaScript项目。我相信Lerna在引擎盖下使用Yarn,但是使用Yarn作为项目的包管理器,此功能支持开箱即用。

这是一个可能有助于了解Yarn和Lerna如何协同工作的回购:https://github.com/Quramy/lerna-yarn-workspaces-example

答案 2 :(得分:7)

现在npm v7.0.0已发布,npm支持workspaces。您可以从单个顶级根软件包中管理多个软件包。在https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/

中查看更多信息

除非使用npm install -g npm@7安装,否则默认情况下您的工作流程将不会获得 npm v7.0.0

答案 3 :(得分:5)

从2020-08-11开始,v7 beta中提供了工作区。

RFC 26添加了workspaces支持的第一阶段。这改变了 根项目的package.json文件包含一个npm时npm的行为 workspaces字段。

https://blog.npmjs.org/post/626173315965468672/npm-v7-series-beta-release-and-semver-major

您可以在此处查看和下载测试版:

https://github.com/npm/cli/tags

答案 4 :(得分:0)

NPM 版本 7 支持工作区管理。现在我们可以使用 npm workspace 管理我们的工作区依赖项。

有关工作区支持的更多信息,请访问此处的官方网站。

https://docs.npmjs.com/cli/v7/using-npm/workspaces

如果您正在寻找一个简单的例子,请点击此链接

https://github.com/pravanjan/npm-workspace-example/tree/master

使用节点 v16.6.1 测试 npm 7.20.3