使用纱线工作区时,如何强制将包安装到相关的 node_modules 中?

Pau*_*erg 4 npm node-modules yarnpkg yarn-workspaces

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

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

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

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

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

Edu*_*cko 7

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

基本上你有两个选择

  1. 从子包做
"workspaces": {
  "nohoist": ["react-native", "react-native/**"]
}
Run Code Online (Sandbox Code Playgroud)
  1. 从根级别做
"workspaces": {
  "packages": ["packages/*"],
  "nohoist": ["**/react-native", "**/react-native/**"]
}
Run Code Online (Sandbox Code Playgroud)

如果您不想xyz为所有子项目共享包,则将其设置在 root 中,否则在子项目中。