我检查了一个使用纱线代替npm作为构建工具的仓库。
在package.json中,它定义了处理多个子项目的工作空间:
{
"workspaces": [
"packages/*"
],
"dependencies": [],
"devDependencies": [
// long list
]
}
因此,根package.json
不包含任何运行时依赖项。只有packages/*/package.json
包含那些。
要编译(并以开发模式启动),我会这样做:
yarn install
yarn start
我没有找到任何文档,workspaces
也被npm识别并正确使用。
有没有办法让它与npm一起使用?
答案 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
您可以在此处查看和下载测试版:
答案 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