Как условно запустить скрипт npm - PullRequest
0 голосов
/ 28 мая 2019

Я ищу кроссплатформенный способ условного выполнения шага в моем скрипте сборки.

У меня есть шаг сборки, который стоит дорого, однако проверить, нужно ли это, относительно быстро. Я создал скрипт, который возвращает ненулевой код ошибки, если нет необходимости делать шаг сборки. Как я могу написать свой скрипт npm для запуска сборки только в том случае, если проверка пройдена, но с ошибками при сбое этапа сборки?

Пример package.json:

"scripts": {
    "schema:build": "npm run schema:rebuild-check && npm run schema:force-build",
    "schema:rebuild-check": "node tools/schema is-rebuild-necessary",
    "schema:force-build": "npm run schema:validate && npm run schema:generate-index && npm run schema:bundle"
}

Проблема с вышесказанным заключается в том, что если перестроение не требуется, вся моя сборка завершается неудачно. Я не могу просто проглотить код выхода чем-то вроде exitzero, потому что я хочу знать, если какая-либо из команд не сработает в схеме: сценарий принудительной сборки.

1 Ответ

0 голосов
/ 29 мая 2019

Проблема возникает из двух вещей:

1) Если скрипт npm завершается с ненулевым кодом, npm всегда будет жаловаться

2) Необходимо предоставить «else», которое возвращает ненулевое значение, используя || оператор

Рабочий раствор:

"schema:build": "node tools/schema is-rebuild-necessary && npm run schema:force-build || echo Skipping schema build",
"schema:force-build": "npm run schema:validate && npm run schema:generate-index && npm run schema:bundle"
...