103 votes

Auto rechargement d'une Sails.js application sur les changements de code?

Actuellement, il semble que, pour tout changement de code dans un sails.js app vous devez arrêter manuellement les voiles serveur et exécutez sails lift de nouveau avant que vous puissiez voir les changements.

Je me demandais si il n'y a de toute façon lors de l'exécution, le mode de développement pour redémarrer automatiquement les voiles serveur lorsqu'il détecte un changement de code?

73voto

Sandro Munda Points 12808

Vous devez utiliser un observateur comme nodemon, forever, ou quelque chose d'autre...

Par exemple, avec forever:

forever -w start app.js

Pour éviter infini redémarrer car Voiles écrit en .tmp le dossier, vous pouvez créer un .foreverignore le fichier dans votre répertoire de projet et de mettre ce contenu à l'intérieur:

**/.tmp/**

Référence: https://github.com/balderdashy/sails/issues/614

44voto

woss Points 306

Par exemple, avec nodemon pour regarder des api et de configuration des répertoires

.nodemonignore contenu

views/*
.tmp/*
.git/*

Exécutez la commande après la création .nodemonignore

$> nodemon -w api -w config

Exemple pour le superviseur d'ignorer 3 répertoires

$> supervisor -i .tmp,.git,views app.js

7voto

josec89 Points 158

J'ai eu le même problème et je l'ai résolu en utilisant grunt-regarder et grunt-pour toujours avec des voiles@bêta tâches. Le résultat est de 4 grunt commandes:

Mise à JOUR: les tâches sont disponibles dans le courant de voiles version (il n'est plus en bêta :>)

  • start Démarre le serveur
  • stop Arrête le serveur
  • redémarrez Redémarre le serveur
  • startWatch Démarre le serveur et attend des changements pour le redémarrer (à l'aide de grunt-montre). C'est probablement votre solution, mais les autres commandes sont également utiles.

Voici le code que j'utilise des voiles@bêta, qui comprend l'une des tâches de répertoire, je ne sais pas si c'est inclus dans les versions précédentes:

  • Tout d'abord, vous devez installer pour toujours dans vos voiles répertoire:

    npm install grunt-forever --save-dev
    
  • tasks/config/forever.js Configurer jamais tâche.

    module.exports = function(grunt) {
      grunt.config.set('forever', {
        server: {
           options: {
              index: 'app.js',
              logDir: 'logs'
           }
        }
      });
    
      grunt.loadNpmTasks('grunt-forever');
    };
    
  • tasks/config/watch.js (edit) Modifier montre tâche pour ajouter une nouvelle règle

    // api and assets default rules
    ,
    server: {
        // Server files to watch:
        files: [
            'api/**/*',
            'config/**/*'
        ],
    
        // Restart server
        tasks: ['forever:server:restart']
    }
    
  • tasks/register/watchForever.js Inscrire vos tâches personnalisées (ce fichier peut être renommé à ce que vous voulez)

    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'
     ]);
    };
    

Avec cela, vous devriez être en mesure d'utiliser

    grunt startWatch

et faire de votre serveur attendre des modifications à être redémarré :>

Espérons que cela a aidé!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X