2013-07-17 2 views
3

У меня есть проект на основе PHP, который не будет работать на grunt-php. Вместо этого я использую grunt-exec для запуска моего сервера MAMP для разработки.Возможно ли запустить задачу после задачи просмотра?

exec: { 
    serverup: { 
    command: '/Applications/MAMP/bin/start.sh' 
    }, 
    serverdown: { 
    command: '/Applications/MAMP/bin/stop.sh' 
    } 
} 

В моей собственной задаче разработки я запускаю сценарий запуска MAMP непосредственно перед моей задачей. Затем я пытаюсь остановить сервер MAMP после того, как я вышел из задачи просмотра.

grunt.registerTask('default', ['jshint', 'concat', 'compass:dev', 'exec:serverup', 'watch', 'exec:serverdown']); 

Однако, если выйти из задачи с помощью Ctrl-C, то exec:serverdown задача не кажется, бежит. Есть ли способ сделать эту работу? Поскольку сервер никогда не опускается, этот порт привязан до тех пор, пока я вручную не запустил сценарий остановки, и я получу ошибки, если я попытаюсь снова запустить задание по умолчанию, прежде чем сбрасывать его.

Если нет, есть ли другой способ, которым я мог бы выполнить одно и то же?

+0

вы против обмена, почему он не будет работать с хрюкать-PHP делать? –

+0

@SindreSorhus Я точно не знаю. Я разрабатываю тему для [Koken] (http://koken.me/). Я начал использовать grunt-php, но я не смог завершить установку. Я опубликовал на форумах Koken и сказал dev, что он не будет работать со встроенным PHP-сервером, который, по-видимому, использует grunt-php. Он не сказал, почему. – raddevon

ответ

2

Вы можете слушать на SIGINT и запустить скрипт:

var exec = require('child_process').exec; 
process.on('SIGINT', function() { 
    exec('/Applications/MAMP/bin/stop.sh', function() { 
     process.exit(); 
    }); 
}); 

module.exports = function (grunt) {}; 
+0

Благодарим вас за ответ. Выглядит многообещающе. Я попробую скоро и отчитаюсь. – raddevon

+0

У меня проблемы с этим. Я не уверен, где именно это должно быть в моем файле Gruntfile. Если я включу его в 'module.exports = function (grunt) {...}', я больше не могу закончить задачу с помощью Ctrl-C. Если я поставлю это вне этой функции, я получаю «Неустранимая ошибка: хрюкать не определено». – raddevon

+0

@raddevon Я обновил ответ. Попробуй это. –

Смежные вопросы