使用依赖项将 monorepo 项目部署到 AWS Lambda

问题描述 投票:0回答:1

我已经建立了一个基于 Node.js (Typescript) 的 Monorepo,并且我使用 Turborepo 作为管理 Monorepo 的工具。我使用 pnpm 作为我的包管理器。

我的所有主要项目都位于 apps 文件夹中,而我想要跨项目共享的可重用组件则位于 package 文件夹中。

我的项目文件夹结构如下:

apps/
--- project 1/
  ---package.json
  ---app/
  ---node_modules/
  ...
--- project 2
  ---package.json
  ---app/
  ---node_modules/
  ...
packages/
---platform/
  ---package.json
  ---app/
  ---node_modules/
  ...
node_modules/
package.json
turbo.json
...

我的代码已编写,并且构建和 lint 在本地按预期工作。我现在想继续在 AWS Lambda 上的生产系统上部署

project 1
,并且我尝试使用 Gitlab CI 和 AWS CodePipelines - 我的问题是类似的。

我的问题是许多依赖项被组织为符号/硬链接。例如,

project 1
依赖于
platform
,但这种依赖关系显示为符号链接。要将
project 1
发布到 Lambda,我需要它成为一个独立项目,所有依赖项都存在于
node_modules
文件夹中。当我压缩时链接没有用
project 1

  1. 我尝试生成一个可部署文件夹,并使用
    node_modules
    从根
    cp -rL
    文件夹复制所有依赖项。然而,这似乎并没有解决一些错误:
cp: cannot overwrite non-directory 'apps/omnibus-comments-handler/node_modules/././typescript' with directory 'node_modules/./typescript'

但是,即使如此,我也不确定这是否是正确的解决方案,因为它复制了不必要的依赖项。

  1. 我尝试使用
    npm
    来代替,因为它以平面样式安装依赖项 - 然而,由于类似的挑战,即使这样似乎也不起作用。例如,
    platform
    是工作区依赖项,并且是符号链接。

我的目标是运行“构建”命令,使项目 1 的所有依赖项都存在于 node_modules 文件夹中,以便我可以将其压缩并将其部署到 Lambda。实现这一目标的最佳方法是什么?

node.js npm monorepo pnpm turborepo
1个回答
0
投票

这篇文章有点旧,也许我不明白你的问题,但是你尝试过吗

turbo prune

我认为它就是为了这个目的而制作的。

© www.soinside.com 2019 - 2024. All rights reserved.