You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js前端搭配AWS CDK后端的文件夹与Git结构最佳实践咨询

现有方案合理性评估

你当前使用的CDK后端嵌入前端目录、双独立package.json的结构属于可用方案,但存在明显的优化空间:

  • 独立node_modules带来的依赖重复是可解决的冗余问题,除了占用额外磁盘空间外,最大的风险是前后端公共依赖(如TypeScript、通用类型包、ESLint规则包等)版本不一致,容易出现本地运行正常、部署后类型报错或逻辑异常的问题
  • 两份独立的.gitignore规则容易出现冲突,可能导致不需要提交的临时文件被误上传到仓库

单Git仓库方案的CI/CD适配性

这个方案非常值得推荐,尤其是对于全栈小团队、前后端迭代强绑定的无服务项目:

  • 前后端代码版本完全对齐,不会出现前端更新了接口调用逻辑、但后端对应代码还在另一个仓库未合并的版本错位问题
  • GitHub CI/CD配置可以统一维护在单份工作流文件中,通过路径触发规则即可实现精准构建:仅backend目录变更时执行CDK部署,仅前端目录变更时执行Next.js构建部署,不需要维护两套独立的CI配置
  • 全栈功能迭代可以放在同一个PR里提交和评审,不需要跨仓库关联代码,协作效率更高
  • 本地开发可以配置统一的启动脚本,同时拉起Next.js开发服务和CDK本地模拟环境,不需要切换多个仓库操作

推荐的文件夹及Git仓库结构

根据项目规模可以选择两种方案,优先推荐单仓库monorepo方案:

方案1:单仓库monorepo结构(适合小到中等规模项目,降本提效最优解)

使用npm/yarn/pnpm的workspaces能力管理依赖,消除重复安装问题,优化后结构如下:

.github/
  workflows/
    ci-cd.yml # 统一存放CI/CD配置
backend/
  bin/
  lib/
  test/
  package.json # 仅声明CDK专属依赖,公共依赖提升到根目录
public/
src/
styles/
.gitignore # 统一使用根目录的忽略规则,删除backend目录下的独立.gitignore
next.config.js
package.json # 根目录存放公共依赖:TypeScript、通用@types包、ESLint配置等
pnpm-workspace.yaml # 如使用pnpm则添加该文件声明workspace范围
node_modules/ # 统一依赖目录,公共依赖仅安装一次

CI规则参考逻辑:

检测到backend/**路径下文件变更:执行CDK synth、diff、deploy步骤
检测到src/**/public/**/styles/**路径下文件变更:执行Next.js构建、部署步骤
两类路径均有变更时,两个部署流程并行执行

方案2:多仓库拆分(仅适合团队规模大、前后端完全独立迭代的场景)

将Next.js前端和CDK后端拆分为两个独立Git仓库,各自维护独立的依赖和CI/CD流程。该方案适合前后端分属不同团队、迭代节奏完全不一致的场景,缺点是需要额外维护版本对齐规则,开发和协作成本高于单仓库方案。

内容的提问来源于stack exchange,提问作者Andrew Pulver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 12:54:04