【问题标题】: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,以便我可以发布 lib2lib3

但是当我运行 yarn workspace lib1-ws installyarn install(在 lib1-ws 文件夹内)时,yarn 会尝试安装 lib2-wslib3- ws 也一样,使用此错误中断安装操作:

错误在“npm”注册表中找不到“lib2-ws@0.0.1”所需的包“lib1@^0.0.1”。

不确定我缺少什么,是否可以运行一些命令来忽略这个 workspace-aggregator 东西?

谢谢。

【问题讨论】:

    标签: angular angular-library yarn-workspaces


    【解决方案1】:

    似乎我搜索的不够多,发布此问题后,我又阅读了另一个question,给了我一个想法。

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

    "workspaces": {
      "packages": [
        "packages/*",
        "packages/**/projects/*"
      ]
    }
    

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

    [更新]

    由于某些角度构建的特殊性,在安装所有依赖项后,空设置必须执行一些命令(因为 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 本地存储库中准备就绪。

    【讨论】:

    • 嘿,你能只安装每个工作区所需的 node_modules 吗?
    • 我不确定,因为我停止了使用这种架构的项目。
    猜你喜欢
    • 2018-07-18
    • 2020-09-30
    • 2020-08-21
    • 2021-06-03
    • 2021-08-08
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多