使用yarn工作区时,如何强制将软件包安装在相对的node_modules中?

时间:2019-07-06 00:52:26

标签: npm node-modules yarnpkg yarn-workspaces

我喜欢纱线工作区,但由于与外部工具不兼容,我常常不得不抽出特定的包装。

主要问题是,我的源代码不在相对的node_modules 中,而是上面的几层(通常对于纱线工作区和节点而言是正常的)。

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

  

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

有没有办法强制复制包裹?我读到有关--focus的信息,但这不是我所需要的。

1 个答案:

答案 0 :(得分:4)

您要寻找的被称为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,则将其设置为root,否则将其设置为子项目。