纱线工作区隔离

DTo*_*odt 5 angular angular-library yarn-workspaces

我在空设置上遇到了一些纱线问题(当我在 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
Run Code Online (Sandbox Code Playgroud)

项目 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东西?

谢谢。

DTo*_*odt 2

看来我搜索得不够,发布这个问题后,我读了另一个问题,给了我一个想法。

我的工作区对象变成这样:

"workspaces": {
  "packages": [
    "packages/*",
    "packages/**/projects/*"
  ]
}
Run Code Online (Sandbox Code Playgroud)

它有效,现在我什至可以安装而无需构建或发布。

[更新]

由于一些角度构建的特殊性,在安装所有依赖项后,空设置必须执行一些命令(因为yarn工作空间为库创建符号链接):

  1. build lib1 then publish lib1
  2. yarn workspace lib2-ws add lib1@latest
  3. yarn workspace lib3-ws add lib1@latest
  4. build lib2 then publish lib2
  5. build lib3 then publish lib3

完成此步骤后,我的库已在 verdaccio 本地存储库中准备就绪。