我有相当大的 monorepo,完全由Yarn Workspaces(没有 Lerna)管理。其中一个包(“工作区”)包含一组第 3 方 NodeJS 包,我们将它们用作Lambda 函数的共享层dependencies,在package.json此包中收集。该包的构建脚本应该将所有依赖项收集到一个 zip 文件中,该文件稍后将由 Terraform 发布。不幸的是,Yarn 无法从 monorepo 构建单个工作区,因此我们必须直接使用 NPM。
目前我们大致做了以下工作——
- 复制
package.json到build文件夹 npm install --production在这个文件夹中运行- 压缩生成的
node_modules树
我对这种方法的主要问题(除了混合构建工具)是构建不可重复 - 每次我们运行时,npm install我们可能会获得任何依赖包的更新兼容版本,因为该版本被 Yarn 在顶层“锁定”yarn.lock文件和 NPM(显然)不知道它。
我很确定我们并不孤单。有没有更好的方法可用?