Inicie seu servidor de desenvolvimento MAMP com Grunt

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. serverupe serverdownfez mais sentido para mim.

Agora, edite sua tarefa Grunt que contém uma tarefa de observação. Adicione exec:serverupantes e exec:serverdowndepois 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 serverdowntarefa 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.exportspara Grunt. Isso observará o SIGINTevento – 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 serverdowntarefa, pois ela nunca é disparada de qualquer maneira.