AWS Codebuild在构建期间从Node包中删除开发依赖关系

时间:2019-12-21 19:25:47

标签: node.js amazon-web-services aws-lambda aws-codebuild

我在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是否是正确的方法。

3 个答案:

答案 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没有安装。