Cloud Foundry Node.js Buildpack部署时如何跳过prepare脚本?
解决方案
1. 跳过npm install时的prepare脚本(避免husky安装)
Cloud Foundry的Node.js Buildpack支持通过环境变量传递npm参数,直接在manifest.yml里添加环境变量NPM_INSTALL_FLAGS即可:
applications: - name: your-nextjs-app buildpacks: - nodejs_buildpack env: NPM_INSTALL_FLAGS: "--ignore-scripts" command: npm start
这个变量会让buildpack执行npm install时自动带上--ignore-scripts参数,跳过所有脚本(包括prepare),从根源上避免husky被安装。
2. manifest的command字段支持多条命令
可以直接用shell的命令连接符(&&或;)在command里写多条命令,比如:
command: "npm ci --ignore-scripts && npm start"
&&表示前一条命令执行成功后才会执行下一条,;则不管前一条结果都执行,根据你的需求选择即可。
3. 关于你提出的start.sh方案及替代方案
你的start.sh方案是可行的,但确实有更简洁的无bash脚本方案:
- 方案一:利用npm scripts组合命令
在package.json里新增一个脚本:
{ "scripts": { "start": "next start", "deploy-start": "npm ci --ignore-scripts && npm run start" } }
然后把manifest.yml的command改成:
command: npm run deploy-start
- 方案二:直接用环境变量+原command
就是前面提到的NPM_INSTALL_FLAGS方案,不需要修改任何代码,仅通过manifest配置就能解决问题,启动阶段还是用原来的npm start,最省心。
对比下来,方案二更推荐,因为它不需要修改代码,仅通过manifest配置就能解决问题,也避免了额外的脚本维护。
内容的提问来源于stack exchange,提问作者medev21
相关产品推荐
相关产品推荐

