如何使用针对Node.js的AWS“ Sam build”排除模块?

时间:2019-03-16 17:08:17

标签: aws-sam-cli

我期望使用sam build命令不包含aws-sdk包,因为Node.js Lambda运行时已经包含了它。

据我了解,nodejs的sam build是来自claudia pack的{​​{1}}命令的端口,但是运行{{1}时我看不到任何claudiajs标志}。

我尝试将--no-optional-dependencies安装为可选依赖项,但仍包括在内。

是否有一种使用sam build --help命令从aws-sdk目录中排除依赖项的方法?

2 个答案:

答案 0 :(得分:2)

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

  1. 将aws-sdk安装为开发依赖项
npm i -D aws-sdk
  1. 将aws-sdk作为可选依赖项安装,然后使用.npmrc文件来禁用在npm install上安装可选斜率
npm i -O aws-sdk
# .npmrc
optional = false

我的文件夹结构看起来像这样:

-- 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

在这两个实例中运行sam build都会打包软件包,而不会给我带来不必要的依赖。

答案 1 :(得分:1)

McShaman 答案对 NPM 6 有效。

NPM 7 中的 NPM 配置已更改 - 删除了“可选”。

您应该改用“省略”来忽略可选的依赖项:

https://docs.npmjs.com/cli/v7/using-npm/config#omit

# .npmrc
omit=optional