nohoist
我为此找到的解决方案是您的根package.json
文件中的 Yarn选项。
默认情况下,Yarn 将依赖项提升到根目录,以便它们可以在您的包之间共享。不幸的是,这不适用于 Firebase。这意味着您需要告诉 Yarn 不要提升 Firebase 函数使用的依赖项。
的文档nohoist
不太理想,但这里有一篇关于它的官方博客文章:
https ://yarnpkg.com/blog/2018/02/15/nohoist/
你可能想要这样的东西:
{
"workspaces": {
"packages": [
"packages/*"
],
"nohoist": [
"functions/core",
"functions/common",
"functions/**"
]
}
}
请记住,这使用了每个工作区包name
的文件中使用的字段。package.json
所以在这个例子中,假设functions
目录有一个package.json
带有“functions”的name
.
functions/**
告诉 yarn 不要提升packages/functions/package.json
. 但是,这不适用于您的共享纱线包,因此functions/core
需要functions/common
单独指定。
您还需要将工作空间作为依赖项包含在functions
项目中,因此将它们添加到您的package.json
:
{
"name": "functions",
"dependencies": {
"core": "*",
"common": "*",
}
}
添加完所有内容后,您应该删除packages/functions/node_modules
目录并运行yarn install
. 完成此操作后,您应该会看到所有依赖项都包含在packages/functions/node_modules
(不是符号链接)中。