Задать вопрос

Как в 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.
  • Вопрос задан
  • 687 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 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, я думаю вашу проблему это решит
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы