纱线工作区隔离

时间:2019-02-19 21:48:07

标签: angular angular-library yarn-workspaces

在空的设置下(当我在npm上没有任何版本的lib时),纱线有一些问题。

我有一个结构化的波纹管多模块项目:

let obj1 = null;
let obj2 = {};
let obj3 = {name: ""}
let obj4 = {name: "John"}

const safeReadObj = (obj, key) => obj && obj[key] || "N/A";

// Test cases:
console.log(safeReadObj(obj1, "name"));
console.log(safeReadObj(obj2, "name"));
console.log(safeReadObj(obj3, "name"));
console.log(safeReadObj(obj4, "name"));

项目lib2-ws和lib3-ws需要构建lib1。

我试图发布(安装,构建和发布)lib1,以便可以发布 lib2 lib3

但是,当我运行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 yarn workspace lib1-ws install(在 lib1-ws 文件夹中)时,yarn会尝试安装 lib2-ws 和< strong> lib3-ws ,也会由于以下错误而中断安装操作:

  

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

不确定我缺少什么,是否可以运行一些命令来忽略此yarn install事情?

谢谢。

1 个答案:

答案 0 :(得分:0)

似乎我没有进行足够的搜索,在发布了这个问题之后,我又读了另一个question,这给了我一个主意。

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

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

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

[更新]

由于某些角度构建特性,在安装所有依赖项之后,空安装程序必须执行某些命令(因为yarn工作区为lib创建了符号链接):

  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本地存储库中准备好了。