#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