纱线工作区隔离
Posted
技术标签:
【中文标题】纱线工作区隔离【英文标题】:Yarn workspace isolation 【发布时间】:2019-07-13 12:01:14 【问题描述】:我在空设置时遇到了一些纱线问题(当我在 npm 上没有任何版本的库时)。
我有一个多模块项目,结构如下:
root # Yarn workspace
* packages
| * lib1-ws # Angular workspace
| | * projects
| | | * lib1
| | | * package.json
| | * package.json
| |
| * lib2-ws # Angular workspace
| | * projects
| | | * lib2
| | | * package.json # peer depends on lib1
| | * package.json # depends on lib1
| |
| * lib3-ws # Angular workspace
| * projects
| | * lib3
| | * package.json # peer depends on lib1
| * package.json # depends on lib1
|
* package.json
项目 lib2-ws 和 lib3-ws 需要构建 lib1。
我试图发布(安装、构建和发布)lib1,以便我可以发布 lib2 和 lib3。
但是当我运行 yarn workspace lib1-ws install
或 yarn install
(在 lib1-ws 文件夹内)时,yarn 会尝试安装 lib2-ws 和 lib3- ws 也一样,使用此错误中断安装操作:
错误在“npm”注册表中找不到“lib2-ws@0.0.1”所需的包“lib1@^0.0.1”。
不确定我缺少什么,是否可以运行一些命令来忽略这个 workspace-aggregator
东西?
谢谢。
【问题讨论】:
【参考方案1】:似乎我搜索的不够多,发布此问题后,我又阅读了另一个question,给了我一个想法。
我的工作区对象变成了这样:
"workspaces":
"packages": [
"packages/*",
"packages/**/projects/*"
]
而且它有效,现在我可以安装,甚至无需构建或发布。
[更新]
由于某些角度构建的特殊性,在安装所有依赖项后,空设置必须执行一些命令(因为 yarn 工作区为库创建符号链接):
build lib1 then publish lib1
yarn workspace lib2-ws add lib1@latest
yarn workspace lib3-ws add lib1@latest
build lib2 then publish lib2
build lib3 then publish lib3
完成这些步骤后,我的库已在我的 verdaccio 本地存储库中准备就绪。
【讨论】:
嘿,你能只安装每个工作区所需的 node_modules 吗? 我不确定,因为我停止了使用这种架构的项目。以上是关于纱线工作区隔离的主要内容,如果未能解决你的问题,请参考以下文章