使用sam build
命令我期望不包括aws-sdk
软件包作为Node.js lambda Runtime已经包含了IT。
正如我了解nodejs的sam build
是claudiajs
的claudia pack
端口,但是当我运行sam build --help
时,我看不到任何--no-optional-dependencies
标志。
我尝试将aws-sdk
作为可选依赖性安装,但仍包括在内。
是否有一种方法可以使用sam build
命令从node_modules
目录中排除依赖关系?
从我的实验中我找到了几个选项:
- 安装AWS-SDK作为DEV依赖关系
npm i -D aws-sdk
- 安装AWS-SDK作为可选依赖性,然后使用.NPMRC文件禁用在NPM安装上安装可选的DECENCES
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构建都将包装捆绑在一起,而没有不需要的依赖关系。
mcshaman答案对NPM 6。
npm配置已在NPM 7中发生了变化 - "可选"被删除。
您应该使用"省略"相反,忽略可选依赖性:
https://docs.npmjs.com/cli/v7/ususe-npm/config#omit
# .npmrc
omit=optional