TypeScript+Vite/Node.js应用Build命令的执行时机与执行者咨询
TypeScript+Node.js项目在AWS SAM下的生产部署流程及build命令说明
build命令的执行时机与执行者
执行者
- 本地开发/测试阶段:由你(开发者)在本地终端手动执行
npm run build,或者通过IDE的构建触发工具执行。 - 自动化部署阶段:由CI/CD流水线的运行环境执行,比如AWS CodeBuild容器、GitHub Actions Runner,全程无需手动干预。
执行时机
- 本地手动部署前:必须先执行build,把TypeScript编译为Node.js可运行的JavaScript,同时让Vite完成前端资源的打包压缩,生成可部署的产物目录(通常是
dist/)。 - CI/CD流水线中:代码提交到生产分支(如
main)后,流水线会自动拉取代码,先执行npm run build完成构建,再进入后续的打包、部署步骤。 - AWS SAM CLI部署时:如果你的SAM模板配置了自定义构建逻辑(比如通过
BuildMethod指定调用package.json脚本),执行sam build命令时,SAM会自动触发npm run build,将构建产物整理到SAM指定的目录,为后续部署做准备。
基于AWS SAM的生产部署具体流程
1. 前置准备与本地验证
- 确认
template.yaml配置正确:比如Node.js Lambda函数的CodeUri指向构建后的产物目录,前端Vite项目对应的S3存储桶、CloudFront分发等资源已在模板中定义。 - 本地执行
npm run build,检查dist/目录下的产物是否完整:Node.js代码编译为JS文件,前端生成静态HTML、压缩后的CSS/JS。 - 用
sam local invoke测试Lambda函数逻辑,sam local start-api验证API网关的路由是否正常,确保本地运行无问题。
2. 部署配置
- 在
template.yaml中设置生产环境参数:比如Lambda的内存配额、超时时间,生产环境的环境变量(数据库连接字符串、第三方API密钥等),S3存储桶名称需保证全局唯一。 - 可选:创建
samconfig.toml文件,保存部署的固定配置(如AWS区域、生产栈名称),避免每次部署重复输入参数。
3. 自动化部署(生产环境推荐)
通过CI/CD流水线(如AWS CodePipeline、GitHub Actions)实现全自动化部署,步骤如下:
- 触发条件:代码推送到
main等生产分支时自动触发流水线。 - 流水线核心步骤:
- 拉取代码:从版本库(GitHub、AWS CodeCommit等)拉取最新的生产分支代码。
- 安装依赖:执行
npm ci(比npm install更适合生产,严格按照package-lock.json安装依赖,保证版本一致性)。 - 构建产物:运行
npm run build生成可部署的代码和静态资源。 - SAM打包:执行
sam package --s3-bucket <你的生产存储桶> --output-template-file packaged.yaml,将构建产物上传到S3,并生成包含资源路径的打包后模板。 - SAM部署:执行
sam deploy --template-file packaged.yaml --stack-name <生产栈名称> --capabilities CAPABILITY_IAM,AWS会根据模板创建/更新所有生产资源,包括Lambda、API网关、S3、IAM角色等。 - 验证:调用API网关端点,访问前端页面,确认功能正常运行。
4. 生产环境运维
- 监控:启用AWS CloudWatch,配置Lambda日志、API网关请求指标、S3访问日志的告警规则,及时发现异常。
- 版本管理:利用SAM的版本发布功能,为Lambda函数创建版本和别名,方便后续的灰度发布和快速回滚。
- 回滚:如果部署出现问题,可通过AWS CloudFormation的回滚功能,或执行
sam deploy --rollback恢复到上一个稳定版本。
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

