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

使用CDK部署TypeScript编写的Lambda时如何仅部署JS文件

解决方案:仅部署Lambda的JavaScript文件(排除TS/类型定义文件)

我来给你几个实用的方案,帮你解决CDK部署Lambda时包含冗余TS文件的问题,每个方案都有明确的操作步骤,你可以根据自己的场景选择:

方案1:直接在CDK Asset中过滤文件(最快实现)

不需要修改任何编译配置,直接通过CDK的AssetOptions参数来排除不需要的文件,或者只包含需要的JS文件。

代码示例:

// 方式1:排除TS和类型定义文件
code: lambda.Code.asset('lambdas', {
  exclude: ['**/*.ts', '**/*.d.ts'],
})

// 方式2:仅包含JS文件(二选一即可)
code: lambda.Code.asset('lambdas', {
  include: ['**/*.js'],
})

优点:

  • 零侵入,不用改现有TS编译流程或目录结构
  • 配置简单,直接在CDK代码中完成过滤

方案2:为Lambda代码单独配置TS编译目录(更清晰的结构)

如果想彻底分离源文件和部署产物,可以给Lambda的TS代码单独设置一个tsconfig,编译到独立的输出目录,这样CDK只需要指向这个输出目录即可,不会影响根目录的stack.ts编译。

操作步骤:

  1. 在lambdas目录下创建tsconfig.lambda.json:
{
  "extends": "../tsconfig.json", // 继承根目录的基础配置
  "compilerOptions": {
    "outDir": "../dist/lambdas", // 指定Lambda代码的输出目录
    "rootDir": "./" // 源文件根目录为当前lambdas目录
  },
  "include": ["**/*.ts"] // 只编译当前目录下的TS文件
}
  1. 在package.json中添加Lambda编译脚本:
"scripts": {
  "build": "tsc", // 编译根目录的CDK代码(比如stack.ts)
  "build:lambda": "tsc -p lambdas/tsconfig.lambda.json", // 单独编译Lambda代码
  "deploy": "npm run build && npm run build:lambda && cdk deploy" // 部署前先编译两者
}
  1. 修改CDK中的代码源指向编译后的目录:
code: lambda.Code.asset('dist/lambdas')

优点:

  • 源文件和部署产物完全分离,目录结构更清晰
  • 避免误部署源文件,编译后的JS是纯净的运行代码

方案3:使用CDK的NodejsFunction自动处理TS编译与打包(最优解)

AWS CDK提供了@aws-cdk/aws-lambda-nodejs包,专门用于处理Node.js(含TypeScript)的Lambda函数,它会自动用esbuild编译TS代码、打包成最小体积的JS文件,还支持tree shaking和压缩,彻底解决文件冗余问题。

操作步骤:

  1. 安装依赖:
npm install @aws-cdk/aws-lambda-nodejs
  1. 在CDK代码中替换原有的Function为NodejsFunction:
import { NodejsFunction } from '@aws-cdk/aws-lambda-nodejs';

// ...

const myLambda = new NodejsFunction(this, 'MyLambdaFunction', {
  entry: 'lambdas/index.ts', // Lambda的TS入口文件路径
  handler: 'handler', // 你导出的处理函数名称
  bundling: {
    minify: true, // 开启代码压缩,进一步减小体积
    sourceMap: false, // 如果不需要源码映射可以关闭
    // 还可以配置外部依赖排除、自定义esbuild选项等
  },
});

优点:

  • 自动处理TS编译,无需手动管理编译流程
  • 打包后的代码体积最小(esbuild支持tree shaking)
  • 支持热重载、自定义打包配置等高级功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:02:40