Прервать скрипт сборки npm из node.js скрипт

#javascript #node.js #npm

#javascript #node.js #npm

Вопрос:

Я создал node скрипт, который проверяет, содержит ли мой проект lock файл или нет. Если этого не произойдет, я хочу прервать свою npm сборку. Есть идеи, как это сделать?

lock-check.js

 const path = require('path');
const fs = require("fs");

const lockFiles = ["package-lock.json", "npm-shrinkwrap.json", "yarn.lock"];

let exists = 0;

function checkIfExists() {
    lockFiles.forEach(
        (lf) => {
            if (fs.existsSync(lf)) {
                exists  ;
            }
        });

    return exists > 0;
}
  

package.json

 ...

"scripts": {
    "prestart": "node ./lock-check.js" // Abort the task
    "start": "webpack-dev-server --config config/webpack.dev.js --hot --inline"
}

...
  

Комментарии:

1. для прерывания вы можете выполнить process.exit(1) с помощью 1 или любого ненулевого кода выхода, чтобы сообщить, что он не был успешно завершен

2. Я подозреваю, что это сработало бы. npm — это другой процесс, поэтому он возобновит выполнение.

3. он отлично работает в конфигурациях webpack, я использовал его для некоторых пользовательских тестов перед его сборкой. просто код выхода должен быть ненулевым

4. Да, вы правы насчет кодов выхода. Если какой-либо шаг скриптов завершается с ненулевым кодом завершения, весь процесс завершается. Смотрите docs.npmjs.com/misc/scripts#exiting Я только что прочитал это

5. Это работает. Спасибо

Ответ №1:

Чтобы прервать процесс сборки, вам просто нужно вызвать process.exit(1) ,

Здесь я использовал 1, но вы можете использовать любой ненулевой код выхода, чтобы сказать, что сборка не была успешной, поскольку 0 означает успешную.

Вы можете прочитать больше в официальных документах nodejs