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

如何在安装npm包时忽略其指定的依赖项?

Node.js Lambda嵌套依赖aws-sdk排除方案

你可以通过以下两种主流方案实现排除嵌套依赖aws-sdk的需求,适配AWS SAM部署场景:

方案1:通过npm overrides字段强制排除嵌套依赖

npm 8.3.0及以上版本支持overrides配置,可以强制覆盖项目所有依赖的子依赖规则,直接全局标记aws-sdk不需要安装:
在项目根目录的package.json中添加如下配置:

{
  "name": "your-sam-project",
  "dependencies": {
    "aws-appsync": "^4.1.9"
  },
  "overrides": {
    "aws-sdk": "npm:empty-npm-package@^1.0.0"
  }
}

配置完成后执行npm install,所有嵌套依赖引入的aws-sdk都会被替换为一个空的npm包,不会占用部署包体积,代码运行时会自动调用Lambda环境内置的aws-sdk。

方案2:通过AWS SAM打包规则直接过滤

不需要修改npm配置,直接在SAM模板的函数配置中添加排除规则,打包时自动过滤所有aws-sdk相关目录:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  YourLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: nodejs18.x # 替换为你实际使用的运行时版本
      CodeUri: ./
      Handler: index.handler
      Exclude:
        # 过滤根目录直接依赖的aws-sdk
        - "node_modules/aws-sdk/**"
        # 过滤所有嵌套路径下的aws-sdk
        - "node_modules/**/aws-sdk/**"

该方案不会修改本地node_modules结构,仅在SAM部署打包阶段生效,适合不想改动依赖配置的场景。

注意事项

  • Lambda Node.js 18及以下运行时默认内置AWS SDK v2,如果你使用的aws-appsync版本兼容内置SDK版本,两种方案都不会影响运行时功能
  • 如果使用yarn作为包管理器,可以用resolutions字段替代npm的overrides,配置逻辑完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:02