Acabei de iniciar um novo projeto que requer um servidor PHP, mas o servidor PHP embutido usado por grunt-php não é robusto o suficiente. Em vez disso, preciso executar o servidor MAMP para testá-lo.
Para contornar isso, instalei o excelente plugin grunt-exec, que permite que o Grunt execute comandos arbitrários. Adicione essas tarefas ao seu Gruntfile para permitir que você inicie e pare o servidor MAMP:
exec: {
serverup: {
command: '/Applications/MAMP/bin/start.sh'
},
serverdown: {
command: '/Applications/MAMP/bin/stop.sh'
}
}
Claro, você pode nomear as tarefas como quiser. serverup
e serverdown
fez mais sentido para mim.
Agora, edite sua tarefa Grunt que contém uma tarefa de observação. Adicione exec:serverup
antes e exec:serverdown
depois do relógio. Aqui está um exemplo:
grunt.registerTask('default', ['jshint', 'concat', 'compass:dev', 'exec:serverup', 'watch', 'exec:serverdown']);
ATUALIZAÇÃO: Embora isso funcione para ativar o servidor, não funciona para desativá-lo. Depois que você termina a tarefa em seu shell, nenhuma das tarefas Grunt subsequentes é acionada, portanto, a serverdown
tarefa nunca é executada.
var exec = require('child_process').exec;
process.on('SIGINT', function () {
exec('/Applications/MAMP/bin/stop.sh', function () {
process.exit();
});
});
Inclua isso fora do module.exports
para Grunt. Isso observará o SIGINT
evento – que dispara quando você usa Ctrl-C para encerrar sua tarefa – e trará o servidor para baixo quando o evento disparar.
Você pode remover a serverdown
tarefa, pois ela nunca é disparada de qualquer maneira.