我期望使用sam build
命令不包含aws-sdk
包,因为Node.js Lambda运行时已经包含了它。
据我了解,nodejs的sam build
是来自claudia pack
的{{1}}命令的端口,但是运行{{1}时我看不到任何claudiajs
标志}。
我尝试将--no-optional-dependencies
安装为可选依赖项,但仍包括在内。
是否有一种使用sam build --help
命令从aws-sdk
目录中排除依赖项的方法?
答案 0 :(得分:2)
从我的实验中,我发现了两个选择:
npm i -D aws-sdk
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