У меня есть приложение, которое развертывается на 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));