我有相当大的 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(显然)不知道它。
我很确定我们并不孤单。有没有更好的方法可用?