如何使用 AWS "sam build" 为 nodejs 排除模块?
How to exclude modules using AWS "sam build" for nodejs?
使用 sam build
命令我原以为不会包含 aws-sdk
包,因为 Node.js Lambda 运行time 已经包含了它。
据我所知,nodejs 的 sam build
是来自 claudiajs
的 claudia pack
命令的端口,但是当我 [=30] 时,我没有看到任何 --no-optional-dependencies
标志=] sam build --help
.
我尝试安装 aws-sdk
作为可选依赖项,但仍然包含在内。
有没有办法使用 sam build
命令从 node_modules
目录中排除依赖项?
根据我的实验,我发现了几个选项:
- 安装 aws-sdk 作为开发依赖项
npm i -D aws-sdk
- 将 aws-sdk 作为可选依赖项安装,然后使用 .npmrc 文件禁用在 npm install 上安装可选的 decencies
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 在这两个实例中都捆绑了包,对我来说没有不需要的依赖项。
McShaman 答案对 NPM 6 有效。
NPM 配置已在 NPM 7 中更改 - “可选”已被删除。
您应该改用“省略”来忽略可选依赖项:
https://docs.npmjs.com/cli/v7/using-npm/config#omit
# .npmrc
omit=optional
使用 sam build
命令我原以为不会包含 aws-sdk
包,因为 Node.js Lambda 运行time 已经包含了它。
据我所知,nodejs 的 sam build
是来自 claudiajs
的 claudia pack
命令的端口,但是当我 [=30] 时,我没有看到任何 --no-optional-dependencies
标志=] sam build --help
.
我尝试安装 aws-sdk
作为可选依赖项,但仍然包含在内。
有没有办法使用 sam build
命令从 node_modules
目录中排除依赖项?
根据我的实验,我发现了几个选项:
- 安装 aws-sdk 作为开发依赖项
npm i -D aws-sdk
- 将 aws-sdk 作为可选依赖项安装,然后使用 .npmrc 文件禁用在 npm install 上安装可选的 decencies
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 在这两个实例中都捆绑了包,对我来说没有不需要的依赖项。
McShaman 答案对 NPM 6 有效。
NPM 配置已在 NPM 7 中更改 - “可选”已被删除。
您应该改用“省略”来忽略可选依赖项:
https://docs.npmjs.com/cli/v7/using-npm/config#omit
# .npmrc
omit=optional