我在NodeJS中有一个应用程序,该应用程序是使用AWS CodeBuild构建的,然后使用SAM部署到AWS lambda。我想在构建阶段之后从项目中删除所有devDependencies。在构建阶段,我运行所有需要devDependencies的测试,但我不希望将它们作为工件推送到S3时与其他模块一起压缩。
我的buildspec.yml
version: 0.2
phases:
install:
commands:
# Update libs
- echo Executing the install phase.
runtime-versions:
nodejs: 10
pre_build:
commands:
- npm install
build:
commands:
- echo Executing the build phase.
- npm run test
- export BUCKET=alexa-v1
- aws cloudformation package --template-file template.yml --s3-bucket $BUCKET --output-template-file outputtemplate.yml
post_build:
commands:
- echo Build complete
artifacts:
type: zip
files:
- template.yml
- outputtemplate.yml
我不确定在post_build中添加npm prune --production
是否是正确的方法。
答案 0 :(得分:0)
尝试使用AWS SAM CLI代替常规的AWS CLI。特别是,打包程序时可以使用sam package命令,例如
sam package \
--template-file template.yml \
--s3-bucket $BUCKET \
--output-template-file outputtemplate.yml
答案 1 :(得分:0)
您可以在构建阶段的最后一行之前插入“ npm prune --production”(“ aws cloudformation package ...”)。
这将确保在将代码部署到lambda之前,删除所有dev依赖项。
答案 2 :(得分:0)
我也遇到同样的问题。
以防万一,当您寻找NODE_ENV = production时 我发现devDependency没有安装。