Ответ
я сделать что-то подобное для моих WebPack пучков. Вы можете просто использовать child_process.spawn
для выполнения программ с командной строкой и обработать процесс в скрипте узла.
Вот пример:
var spawn = require('child_process').spawn,
// ...
// Notice how your arguments are in an array of strings
var child = spawn('./node_modules/.bin/webpack-dev-server', [
'--progress',
'--colors',
'<YOUR ENTRY FILE>'
]);
child.stdout.on('data', function (data) {
process.stdout.write(data);
});
child.stderr.on('data', function (data) {
process.stdout.write(data);
});
child.on('exit', function (data) {
process.stdout.write('I\'m done!');
});
You can handle all of the events you like. Это довольно мощный модуль, который позволяет просматривать процесс PID (child.pid
) и даже убить процесс всякий раз, когда вы выбираете (child.kill()
).
Добавление
Аккуратный Хитрость заключается в том, чтобы бросить все в Promise
. Вот упрощенный пример того, что моя версия script.js
будет выглядеть так:
module.exports = function() {
return new Promise(function (resolve, reject) {
var child = spawn('./node_modules/.bin/webpack', [
'-d'
]);
child.stdout.on('data', function (data) {
process.stdout.write(data);
});
child.on('error', function (data) {
reject('Webpack errored!');
});
child.on('exit', function() {
resolve('Webpack completed successfully');
});
});
}
Используя этот метод, вы можете включить ваш script.js
в других файлах и сделать этот код синхронно в вашей системе сборки или любой другой. Возможности безграничны!
Editchild_process.exec
также позволяет выполнять программы из командной строки:
var exec = require('child_process').exec,
// ...
var child = exec('webpack-dev-server --progress --colors <YOUR ENTRY FILES>',
function(err, stdout, stderr) {
if (err) throw err;
else console.log(stdout);
});
, это потрясающе, так или иначе я могу сделать это без появления? – user2167582
@ user2167582 Да! Вы можете использовать 'child_process.exec', чтобы увидеть мое редактирование. –