使用 monorepo 部署到 Firebase 函数

Cra*_*les 8 firebase google-cloud-functions yarn-workspaces

根据带有 Yarn 工作区的 Firebase 函数,我想使用 Yarn 工作区将 monorepo 部署到 Firebase。我可以成功地将“web”方面部署到 Firebase 托管,它引用了一个共享的“核心”工作区。但是,尝试对 Firebase 函数上的“函数”工作区执行相同操作失败。

我正在使用具有以下文件夹结构的 Yarn Workspaces:

packages/           
  core/             // name: firebase-monorepo-core: custom core package
  functions/        // name: firebase-monorepo-functions: firebase functions package
  web/              // name: firebase-monorepo-web: react package
Run Code Online (Sandbox Code Playgroud)

这些已在根package.json文件中配置:

"workspaces": {
    "packages": [
        "packages/*"
    ],
    "nohoist": [
        "**/firebase-monorepo-core"
    ]
}
Run Code Online (Sandbox Code Playgroud)

在试图使纱线在工作区火力地堡(并因此分享我的core包)我使用的nohoist功能来创建符号链接到core工作区functions,并web按照twiz#1的答案

core包还作为functionsand 中的依赖项存在web

"dependencies": {
    "firebase-monorepo-core": "*"
}
Run Code Online (Sandbox Code Playgroud)

当其中任何一个在本地运行时都没有问题,实际上将web包部署到 Firebase 托管工作正常。但是,将functions包部署到 Firebase 函数会引发错误:

Firebase 函数部署错误

我已经创建了一个 Github 存储库https://github.com/cjmyles/firebase-monorepo来演示这一点,web可以在https://fir-monorepo.firebaseapp.com上查看生成的工作区。

functions如果我yarn packcore工作区中部署包并将其作为package.json文件中的 tarball 引用,我可以部署该包,但我真的不喜欢该解决方案,并且需要更多开销来实现自动化。

任何建议将不胜感激,以解决此问题。

pur*_*eth 2

一种可能的解决方案是使用 Lerna。

然后,您可以将core包发布到私有 GitHub 包,并使用 Lerna 创建该core包的符号链接以进行本地开发。