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

hel*_*elt 15 npm package.json yarnpkg

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

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

{
  "workspaces": [
    "packages/*"
  ],
  "dependencies": [],
  "devDependencies": [
    // long list
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

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

yarn install
yarn start
Run Code Online (Sandbox Code Playgroud)

我没有找到任何文档,这workspaces也是npm识别和正确使用的文档.

有没有办法让它与npm一起工作?

小智 15

npm不支持在monorepo中管理依赖关系.在勒拿湖包用于跨依赖于管理JavaScript项目.我相信Lerna在引擎盖下使用Yarn,但是使用Yarn作为项目的包管理器,此功能支持开箱即用.

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

  • `Lerna`与`npm`作为默认`npmClient`一起使用,但是您可以将其设置为使用:`{“ npmClient”:“ yarn”,“ useWorkspaces”:true}` (3认同)

spt*_*pti 15

npm有计划workspacesv7 的某个地方实施,希望如此。他们已经在他们的博客中写到 了它,并且有一个被接受的提议


Sah*_*sha 15

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

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


Ogg*_*las 5

截至 2020 年 8 月 11 日,工作区在 v7 测试版中可用。

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

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

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

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