Как в Gulp.js запустить командой shell процесс, а потом убить его?

Хочется запускать тестовый локальный сервер для тестирования ReST-запросов.
// Запустить можно командой:
gulp.task('startTestServ', ['beforeTask'], shell.task([
	'./myTestServ &', // команда выведет в консоль id процесса
]));
// После этого запускаем, собственно, тесты:
gulp.task('restTests', ['startTestServ'], function() {
	return gulp.src(['restTests/*.js'], {read: false})
		.pipe(mocha());
});
// В конце убиваем тестовый сервер
gulp.task('killTestServ', shell.task([
	'kill ???', // Но не знаем id процесса
]));

Как при помощи gulp-shell или аналогичного инструмента получить id запущенного процесса?
Конечно, можно всячески обойти проблему, но вопрос именно про получение id запущенного процесса в gulp.
  • Вопрос задан
  • 670 просмотров
Решения вопроса 1
@Aves
Достаточно стандартного child_process.spawn:
var gulp = require('gulp');
var spawn = require('child_process').spawn;

var ping;

gulp.task('ping', function() {
    ping = spawn('ping', ['localhost'], {
        stdio: 'inherit' // для примера, серверу не нужно
    });
});

gulp.task('test', ['ping'], function() {
    setTimeout(function() {
        ping.kill();
    }, 2000);
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mourr
@mourr
Passionate JS developer
Посмотрите на gulp-run, он позволяет легко захватить и записать stdout, я думаю вашу проблему это решит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы