我有一个带有根文件夹和客户端文件夹的项目,它们都有package.json
个文件。
在根文件夹上,我永远都不想安装任何软件包。相反,我希望运行的$ yarn add some-package
会自动将其添加到客户端文件夹中,就像我会$ yarn add some-package --cwd ./client
我尝试在cd client
中进行yarn --cwd ./client
和scripts.preinstall
,但是没有用,我认为这是因为preinstall
和install
是不同的过程
我还尝试在preinstall
上运行cusotm bash脚本,但是没有找到将args从命令行传递给它的方法,因此它们会被毛线“弄肿”。
任何想法如何做到这一点?
我对bash还是很陌生,但是我可以在一些指导下研究解决方案。
预先感谢,祝您度过愉快的一天!
PS。我可以通过劫持shell上的yarn命令来检查它,并检查我是否在上述项目文件夹中,以及该命令是否为yarn add
,但我希望为我们所有的开发人员提供一个解决方案,而不是污染我的贝壳。
答案 0 :(得分:2)
解决方案是在.yarnrc
旁边的根项目文件夹中使用package.json
文件。
将此行添加到.yarnrc
:
# install modules in the specified location
--modules-folder ./client
注意:如果已经拥有node_modules
文件夹,则在创建.yarnrc
之后可以将其删除,然后通过运行yarn install
将所有软件包重新下载到目标目录中,以进行后续操作