使用纱线工作区时,如何强制将包安装在相对 node_modules 中?
When using yarn workspaces, how to force a package to be installed in the relative node_modules?
我喜欢 yarn workspaces,但由于与外部工具不兼容,我经常发现自己不得不拿出一个特定的包。
主要问题是我在 相对 node_modules 中没有他们的源代码,但在上面几个级别(这对于 yarn 工作区和节点,一般来说)。
例如,当在相对路径中找不到 "openzeppelin-eth" 时,ZeppelinOS 会给出以下错误消息:
Could not find a zos.json file for 'openzeppelin-eth'. Make sure it is provided by the npm package.
有没有办法强制复制一个包?我读到了 --focus,但这不是我需要的。
您要找的是 nohoist
https://yarnpkg.com/blog/2018/02/15/nohoist/
基本上你有两个选择:
- 从子包开始
"workspaces": {
"nohoist": ["react-native", "react-native/**"]
}
- 从根本上做起
"workspaces": {
"packages": ["packages/*"],
"nohoist": ["**/react-native", "**/react-native/**"]
}
如果要在所有子项目中共享包 xyz
,则将其设置在根项目中,否则在子项目中设置。
我喜欢 yarn workspaces,但由于与外部工具不兼容,我经常发现自己不得不拿出一个特定的包。
主要问题是我在 相对 node_modules 中没有他们的源代码,但在上面几个级别(这对于 yarn 工作区和节点,一般来说)。
例如,当在相对路径中找不到 "openzeppelin-eth" 时,ZeppelinOS 会给出以下错误消息:
Could not find a zos.json file for 'openzeppelin-eth'. Make sure it is provided by the npm package.
有没有办法强制复制一个包?我读到了 --focus,但这不是我需要的。
您要找的是 nohoist
https://yarnpkg.com/blog/2018/02/15/nohoist/
基本上你有两个选择:
- 从子包开始
"workspaces": {
"nohoist": ["react-native", "react-native/**"]
}
- 从根本上做起
"workspaces": {
"packages": ["packages/*"],
"nohoist": ["**/react-native", "**/react-native/**"]
}
如果要在所有子项目中共享包 xyz
,则将其设置在根项目中,否则在子项目中设置。