recarregando automaticamente o servidor Koa
Pergunta
Eu comecei a brincar com Koa, mas até agora não conseguimos encontrar uma solução decente para recarregar automaticamente o aplicativo após alterações no código.
Meu entendimento é que nómon é a solução preferida no universo Node, mas estou recebendo erros devido ao --harmony
bandeira (exigida por Koa):
$ node_modules/.bin/nodemon /path/to/node-unstable/bin/node app.js
/path/to/node-unstable/bin/node --harmony $@
^^^^^^^
SyntaxError: Unexpected identifier
[nodemon] app crashed - waiting for file changes before starting...
Solução
node_modules/.bin/nodemon --harmony-generators app.js
deve ser suficiente
Outras dicas
Eu gostaria de recomendar a você "pm2": http://pm2.keymetrics.io/
pm2 é um gerenciador de processos.Ele gerencia os estados de seus aplicativos, para que você possa iniciar, parar, reiniciar e excluir processos.
Você pode instalar facilmente o pm2 (geralmente em sua máquina) digitando:sudo npm instalar -g pm2
Basicamente o pm2 ao ver algumas alterações no seu código, ele reinicia o seu processo instantaneamente, se o seu processo travar ele será reiniciado e o erro será registrado.Para mais informações, dê uma olhada na página de documentação:http://pm2.keymetrics.io/docs/usage/cluster-mode/
Definir a opção 'execMap' nesta tarefa gulp funciona para mim:
var nodemon = require('gulp-nodemon');
gulp.task('serve-dev', function() {
var options = {
script: './src/server/app.js',
execMap: {
"js": "node --harmony"
},
delayTime: 1,
env: {
'PORT': port,
'NODE_ENV': 'dev'
},
watch: ['./src/server/']
};
return nodemon(options);
});
Obviamente, suas outras opções podem ser diferentes, mas incluí tudo, pois me irrita quando estou aprendendo algo ver apenas o mínimo em uma resposta.
Recentemente, terminei de criar uma API da web simples usando KOA e, quanto a uma ação de recarregamento após alterações de código, usei relógio babel
A vantagem de usá-lo já está declarada no repo:
Se você está cansado de usar babel-node junto com nodemon (ou solução similar).A razão pela qual a configuração mencionada acima funciona tão mal é o tempo de inicialização do próprio babel-node.babel-watch apenas inicia o babel no processo "mestre", onde também inicia o observador de arquivos.A transpilação também é realizada nesse processo.Em eventos do file-watcher, ele gera um processo de nó puro e passa o código transpilado do processo pai junto com os mapas de origem.Isso nos permite evitar o carregamento do babel e de todas as suas dependências toda vez que reiniciamos o script/aplicativo JS.