tutorial sails español course node.js sails.js

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

https://www.npmjs.com/package/sails-hook-autoreload


Tienes que usar un observador como forever , nodemon , o algo más ...

Ejemplo

  1. Instalar siempre ejecutando:

    sudo npm install -g forever

  2. 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