使用Serverless Framework部署NestJS应用时zip包需包含哪些必要文件?
部署Serverless NestJS应用的必需文件与打包优化方案
不需要将全部项目文件打包进zip包,/src、/test这类非运行时目录完全可以删除,仅保留运行时必需的资源即可,既可以减小包体积,也能提升Serverless函数的冷启动速度。
必需保留的运行时文件
- 编译后的JavaScript产物目录:也就是NestJS执行
npm run build后生成的/dist目录,是应用运行的核心文件 - 包管理配置文件:
package.json,以及对应的锁文件(package-lock.json/yarn.lock/pnpm-lock.yaml) - 仅安装了生产依赖的
node_modules目录:不要包含typescript、jest、eslint等开发阶段才需要的依赖包 - 业务所需的静态资源目录(如有):比如存放静态文件的
/public目录、模板文件目录等 - 生产环境变量配置文件(如有):比如
.env.production这类线上生效的环境变量文件
可以完全排除的文件列表
- 源码与测试相关:
/src目录、/test测试目录、各类测试用例文件、tsconfig.json等编译配置文件 - 开发工具配置:
.eslintrc、.prettierrc、jest.config.js等代码规范、测试工具配置文件 - 项目无关文件:
.git目录、.gitignore、README文档、CHANGELOG日志、本地临时文件、日志文件等 - 本地环境配置:
.env.development、.env.local等本地开发用的环境变量文件
推荐的打包配置示例
在serverless.yml中添加package配置段,采用「先全量排除再按需引入」的策略,保证打包内容最小化:
package: individually: true excludeDevDependencies: true # 自动排除开发依赖,建议显式声明开启 exclude: - "**/*" # 先排除所有文件 include: - "dist/**" - "node_modules/**" - "package.json" # 如有静态资源可补充配置 # - "public/**" # 如有生产环境变量文件可补充配置 # - ".env.production"
配置完成后再执行serverless deploy,生成的zip包就只会包含指定的必需文件。你也可以在打包前先执行npm ci --only=production重新安装仅含生产依赖的依赖包,进一步降低最终zip包的体积。
内容的提问来源于stack exchange,提问作者Pablo Salazar
相关产品推荐
相关产品推荐

