node.js - español - sails js course
¿Recargar automáticamente una aplicación Sails.js en cambios de código? (8)
Actualmente, parece que para cualquier cambio de código en una aplicación sails.js, debe detener manualmente el servidor de velas y hacer que las sails lift
vuelvan a sails lift
para poder ver los cambios.
Me preguntaba si hay alguna forma de ejecutar el modo de desarrollo para reiniciar automáticamente el servidor de velas cuando detecta un cambio de código.
Mejor usas
npm install -g nodemon
Estoy usando esto, y ayudará a mejorar mi velocidad de desarrollo. no es necesario editar ningún archivo para este !.
Después de la instalación
nodemon app.js
Para cualquiera que se pregunte ahora, parece que esto ya no es necesario: una aplicación lanzada con sails lift
desplegables ejecutará una tarea de reloj pesado y los cambios de código serán visibles sin reiniciar.
No me di cuenta de que esto estaba sucediendo al principio porque no hay nada que indique lo que está sucediendo en la consola, pero parece funcionar sin un reinicio (estoy usando Sails 0.11)
Por ejemplo, con nodemon
para ver los directorios de api y config
.nodemonignore
contenidos
views/*
.tmp/*
.git/*
Ejecute el comando después de crear .nodemonignore
$> nodemon -w api -w config
Ejemplo para que el supervisor ignore 3 directorios
$> supervisor -i .tmp,.git,views app.js
Puedes usar sails-hook-autoreload
Simplemente levante su aplicación de forma normal y cuando agregue / cambie / elimine un modelo o archivo de controlador, todos los controladores y modelos se volverán a cargar sin tener que bajar / volver a enviar la aplicación.
Si está utilizando Sails 0.11, puede instalar este gancho para volver a cargar automáticamente cuando cambie los modelos o los controladores (las vistas no requieren recarga):
npm install sails-hook-autoreload
Tienes que usar un observador como forever , nodemon , o algo más ...
Ejemplo
Instalar siempre ejecutando:
sudo npm install -g forever
Ejecutarlo:
forever -w start app.js
Para evitar el reinicio infinito porque Sails escribe en la carpeta .tmp
, puede crear un archivo .foreverignore
en su directorio de proyecto y poner este contenido dentro:
**/.tmp/**
**/views/**
**/assets/**
Vea el problema en GitHub: Forever reiniciar a causa de /.tmp .
Tuve el mismo problema y lo resolví utilizando grunt-watch y grunt-forever con las tareas de @ sails. El resultado es 4 comandos gruñidos:
ACTUALIZACIÓN: las tareas están disponibles en la versión actual de las velas (ya no es beta:>)
- start Inicia el servidor
- stop Detiene el servidor
- reiniciar Reinicia el servidor
- startWatch Inicia el servidor y espera cambios para reiniciarlo (usando grunt-watch). Esta es probablemente su solución, pero los otros comandos también son útiles.
Aquí está el código: estoy usando sails @ beta, que incluye un directorio de tareas , no sé si esto está incluido en versiones anteriores:
Antes que nada debes instalarlo para siempre en tu directorio de velas:
npm install grunt-forever --save-dev
tasks / config / forever.js Configure la tarea para siempre.
module.exports = function(grunt) { grunt.config.set(''forever'', { server: { options: { index: ''app.js'', logDir: ''logs'' } } }); grunt.loadNpmTasks(''grunt-forever''); };
tasks / config / watch.js ( editar ) Editar tarea de observación para agregar una nueva regla
// api and assets default rules , server: { // Server files to watch: files: [ ''api/**/*'', ''config/**/*'' ], // Restart server tasks: [''forever:server:restart''] }
tasks / register / watchForever.js Registre sus tareas personalizadas (este archivo puede renombrarse a lo que desee)
module.exports = function(grunt) { // Starts server grunt.registerTask(''start'', [ ''compileAssets'', ''linkAssetsBuild'', ''clean:build'', ''copy:build'', ''forever:server:start'' ]); // Restarts the server (if necessary) and waits for changes grunt.registerTask(''startWatch'', [ ''restart'', ''watch:server'' ]); // Restarts server grunt.registerTask(''restart'', [ ''forever:server:restart'' ]); // Stops server grunt.registerTask(''stop'', [ ''forever:server:stop'' ]); };
Con esto deberías poder usar
grunt startWatch
y haga que su servidor espere a que se reinicien los cambios:>
Espero que esto haya ayudado!
instala nodemon
global o local.
npm install nodemon --save
npm install nodemon -g
instale las sails
localmente en su proyecto de la siguiente manera
npm install sails --save
luego cambia package.json
de
"scripts": {
"debug": "node debug app.js",
"start": "node app.js"
},
a
"scripts": {
"debug": "node debug app.js",
"start": "node app.js",
"dev": "export NODE_ENV=development && nodemon --ignore ''tmp/*'' app.js && exit 0"
},
entonces
npm run dev