Пропустить npm postinstall скрипт в Travis - PullRequest
1 голос
/ 23 апреля 2019

У меня есть приложение, которое развертывается на AWS , а также Cloud66 (по некоторым причинам).Чтобы собрать приложение для aws, мы должны написать скрипт на travis.yml и развернуть на Cloud66 , мы должны написать команды на postInstall.

Что происходиткогда travis запущен, он делает npm install, для которого он запускает postScript, который также создает приложение, также снова в сценарии yml, в котором выполняется сборка приложения.Таким образом, каждый раз, когда происходит изменение, происходит две сборки, которые не нужны.

Я попытался удалить сценарий postInstall, добавив переменную среды в travis и запустив сценарий предварительной установки, который удалит сценарий postInstall впакет.Это удаляет скрипт postInstall, но ничего не меняет, скрипт postInstall каким-то образом запускается даже тогда.

фрагмент package.json

"preinstall": "node setEnvironment.js",
"postinstall": "npm run build-production"

фрагмент travis.yml

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

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));

1 Ответ

0 голосов
/ 23 апреля 2019

В вашем package.json вы можете сделать следующее:

"postinstall": "if [ -z \"$TRAVIS_BRANCH\" ]; then npm run build-production; fi"

Это должно быть выполнено, только если $TRAVIS_BRANCH не установлено, что должно происходить только на Cloud66 .

...