首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Travis中跳过npm后安装脚本

在Travis中跳过npm后安装脚本
EN

Stack Overflow用户
提问于 2019-04-23 10:21:25
回答 1查看 968关注 0票数 1

我有一个在AWSCloud66上部署的应用程序(出于某种原因)。为了构建aws应用程序,我们必须用travis.yml编写脚本,并将其部署到Cloud66中,我们必须用postInstall编写构建命令。

当travis被触发时,它会执行npm install,它也会为它运行postScript来构建应用程序,同样在应用程序构建的yml脚本中也是如此。因此,每次触发更改时都会发生两个构建,这是不必要的。

我试图删除postInstall脚本,方法是在travis中添加一个环境var,并运行一个预安装脚本,该脚本将删除包中的postInstall脚本。这将删除postInstall脚本,但它不会更改任何内容,postInstall脚本甚至在那时也会运行。

package.json片段

代码语言:javascript
复制
"preinstall": "node setEnvironment.js",
"postinstall": "npm run build-production"

travis.yml片段

代码语言:javascript
复制
script:
- if [ "$TRAVIS_BRANCH" = "prod" ]; then npm run build-production && gulp
  copy-deploy-configs --type=prod; else echo "not an prod branch"; fi

setEnvironment.js

代码语言:javascript
复制
const package = require('./package.json');
const fs = require('fs');

const environment = process.env.APP_ENVIRONMENT;

if (environment === 'travis') {
    delete package.scripts.postinstall;
} else {
    package.scripts["postinstall"] = `npm run build-${environment}`;
}

fs.writeFileSync('package.json', JSON.stringify(package, null, 4));
EN

回答 1

Stack Overflow用户

发布于 2019-04-23 12:07:41

在您的package.json中,您可以执行以下操作:

代码语言:javascript
复制
"postinstall": "if [ -z \"$TRAVIS_BRANCH\" ]; then npm run build-production; fi"

这只应该在没有设置$TRAVIS_BRANCH的情况下执行,这种情况只应该发生在Cloud66上。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55809075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档