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

如何用tsc将AWS AppSync TS解析器的本地依赖打包进输出JS?

解决方案:结合TSC与打包工具实现本地模块内嵌

TSC仅负责TypeScript到JavaScript的转译,不具备模块打包(将本地依赖代码内嵌)的能力,因此需要配合ESBuild或Rollup这类轻量打包工具,同时保留对@aws-appsync/utils的外部依赖,确保输出符合AppSync解析器的要求。以下是适配NX项目的具体实现步骤:

一、使用ESBuild实现(推荐,轻量高效)

1. 安装依赖

在NX项目的对应包目录下执行:

npm install esbuild --save-dev

2. 配置打包命令

在项目的project.json中添加解析器打包目标,批量处理所有解析器文件:

{
  "build-resolvers": {
    "executor": "nx:run-commands",
    "options": {
      "commands": [
        // 先执行TS类型检查(仅校验不输出JS)
        "nx run your-project:type-check",
        // 批量打包所有解析器TS文件,保留@aws-appsync/utils为外部依赖
        "esbuild src/resolvers/*.ts --bundle --format=esm --external:@aws-appsync/utils --outdir=dist/resolvers"
      ]
    }
  },
  "type-check": {
    "executor": "nx:tsc",
    "options": {
      "tsConfig": "src/tsconfig.json",
      "noEmit": true
    }
  }
}

3. 验证输出结果

打包后的JS文件需满足:

  • 本地依赖(如./utils/dynamoDBGetItemRequest)的代码被直接内嵌
  • 仅保留import { ... } from '@aws-appsync/utils'的外部导入语句
  • 明确导出request和response函数,示例:
export function request(ctx) { /* 内嵌的业务逻辑 */ }
export function response(ctx) { /* 内嵌的业务逻辑 */ }

4. CDK适配

确保CDK代码指向打包后的输出目录:

const getUserFunction = new appsync.Function(this, 'GetUserFunction', {
  name: 'GetUser',
  api: api,
  dataSource: userDataSource,
  code: appsync.Code.fromAsset('dist/resolvers/getUser.js'),
  runtime: appsync.FunctionRuntime.JS_1_0_0,
});

二、替代方案:使用Rollup

若偏好Rollup,可按以下配置实现:

1. 安装依赖

npm install rollup @rollup/plugin-typescript @rollup/plugin-node-resolve --save-dev

2. 编写Rollup配置文件

在项目根目录创建rollup.config.js:

import typescript from '@rollup/plugin-typescript';
import resolve from '@rollup/plugin-node-resolve';

export default {
  input: 'src/resolvers/getUser.ts', // 可编写脚本批量处理多个文件
  output: {
    file: 'dist/resolvers/getUser.js',
    format: 'esm'
  },
  external: ['@aws-appsync/utils'], // 标记外部依赖不打包
  plugins: [resolve(), typescript()]
};

3. 整合进NX构建流程

在project.json中添加Rollup执行命令,替换ESBuild的对应步骤即可。


内容的提问来源于stack exchange,提问作者Måns Dahlström

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:48:20