7

我喜欢 yarn 工作区,但由于与外部工具不兼容,我常常发现自己不得不拿出一个特定的包。

主要问题是我在相关的 node_modules中没有他们的源代码,但在上面几个级别(这对于纱线工作区和节点来说是正常的,通常)。

例如,当在相对路径中找不到“openzeppelin-eth”时, ZeppelinOS会给出以下错误消息:

找不到“openzeppelin-eth”的 zos.json 文件。确保它是由 npm 包提供的。

有没有办法强制复制一个包?我读到了--focus,但这不是我需要的。

4

1 回答 1

12

您要查找的内容称为nohoist https://yarnpkg.com/blog/2018/02/15/nohoist/

基本上你有两个选择:

  1. 从子包做
"workspaces": {
  "nohoist": ["react-native", "react-native/**"]
}
  1. 从根级别做
"workspaces": {
  "packages": ["packages/*"],
  "nohoist": ["**/react-native", "**/react-native/**"]
}

如果要xyz在所有子项目之间共享包,则将其设置在根目录中,否则设置在子项目中。

于 2019-08-21T15:47:01.470 回答