我们有一个Angular项目,我们正在尝试使用AWS CodePipeline来部署项目。
我们已将项目推送到CodeCommit存储库。
现在我们面临着使用AWS CodeBuild生成构建的挑战。在CodeBuild中,构建定义是
phases:
build:
commands:
- npm install && ng build-prod
我们收到错误ng: not found
我们还尝试了以下构建定义:
phases:
build:
commands:
- npm install && run build-prod
我们得到的错误是run: not found
我们也不确定我们要输入什么"输出文件"字段。
请帮助.. !!
答案 0 :(得分:7)
CodeBuild的Node.js容器未安装angular-cli。只是Node.js和npm。在构建项目之前,必须先安装angular-cli。上面是一个在S3存储桶中部署的角度项目的buildspec.yml示例:
version: 0.2
env:
variables:
CACHE_CONTROL: "86400"
S3_BUCKET: {-INSERT BUCKET NAME FOR STATIC WEBSITE HERE-}
BUILD_FOLDER: {-INSERT THE NAME OF THE BUILD FOLDER HERE-}
BUILD_ENV: "prod"
phases:
install:
commands:
- echo Installing source NPM dependencies...
- npm install
- npm install -g @angular/cli
build:
commands:
- echo Build started on `date`
- ng build --${BUILD_ENV}
post_build:
commands:
- aws s3 cp ${BUILD_FOLDER} s3://${S3_BUCKET} --recursive --acl public-read --cache-control "max-age=${CACHE_CONTROL}"
- echo Build completed on `date`
artifacts:
files:
- '**/*'
base-directory: 'dist*'
discard-paths: yes
答案 1 :(得分:0)
你的npm安装似乎有问题。参考:https://www.npmjs.com/package/angular-cli
输出文件应该是您要上传到工件s3存储桶的文件,例如:appspec.yml,target / my-app.jar。 您可以在我们的文档中查看“工件”部分:https://docs.aws.amazon.com/codebuild/latest/userguide/create-project.html?icmpid=docs_acb_console#create-project-console 谢谢 辛
答案 2 :(得分:0)
在您的情况下,我认为您正在使用angular-cli作为devDependencies。使用devDependencies,您必须使用node来运行它,或者必须编写脚本以在package.json文件中运行它。例如:
node ./node_module/@angular/cli/bin/ng <rest of the params>
或在package.json文件中,您必须在scripts属性中添加命令定义并使用npm运行:npm run <command-name>
{
...
scripts: {
...
"ng": "ng"
}
...
}
在您的问题中,您已经使用了选项2。但是似乎您在命令开头缺少了npm。应该是这样的:
phases:
build:
commands:
- npm install && npm run build-prod
希望有帮助!