如何使用AWS“sam build”为nodejs排除模块?

Mau*_*ayo 5 aws-sam-cli

使用该sam build命令时,我预计不会包含该aws-sdk包,因为 Node.js Lambda 运行时已包含该包。

据我了解, for nodejs 是来自命令sam build的端口,但是当我运行时我没有看到任何标志。claudia packclaudiajs--no-optional-dependenciessam build --help

我尝试安装aws-sdk为可选依赖项,但仍然包含在内。

有没有办法node_modules使用sam build命令从目录中排除依赖项?

McS*_*man 3

从我的实验中,我发现了几个选择:

  1. 安装 aws-sdk 作为开发依赖项
npm i -D aws-sdk
Run Code Online (Sandbox Code Playgroud)
  1. 安装 aws-sdk 作为可选依赖项,然后使用 .npmrc 文件禁用在 npm install 上安装可选规范
npm i -O aws-sdk
Run Code Online (Sandbox Code Playgroud)
# .npmrc
optional = false
Run Code Online (Sandbox Code Playgroud)

我的文件夹结构如下所示:

-- project
   |-- lambdas
   |   |-- lambda1
   |   |   |-- node_modules
   |   |   |   `-- ...
   |   |   |-- .npmrc
   |   |   |-- index.js
   |   |   |-- package-lock.json
   |   |   `-- package.json
   |   `-- lambda2
   |       |-- node_modules
   |       |   `-- ...
   |       |-- .npmrc
   |       |-- index.js
   |       |-- package-lock.json
   |       `-- package.json
   |-- package-lock.json
   |-- package.json
   `-- template.yml
Run Code Online (Sandbox Code Playgroud)

在这两个实例中运行 sam build 会捆绑软件包,而不会产生我不需要的依赖项。