Actuellement, il semble que pour tout changement de code dans une application sails.js, vous devez arrêter manuellement le serveur de voiles et exécuter sails lift
encore avant que vous puissiez voir les changements.
Je me demandais s’il était possible, en mode développement, de redémarrer automatiquement le serveur Sails lorsqu’il détecte un changement de code.
Vous devez utiliser un observateur comme forever , nodemon , ou autre chose ...
Installez pour toujours en lançant:
Sudo npm install -g forever
Exécuter:
forever -w start app.js
Pour éviter un redémarrage infini car Sails écrit dans .tmp
dossier, vous pouvez créer un fichier .foreverignore
dans le répertoire de votre projet et mettez ce contenu dans:
**/.tmp/**
**/views/**
**/assets/**
Voir le problème sur GitHub: Toujours redémarrer à cause de /.tmp .
Vous pouvez utiliser sails-hook-autoreload
Soulevez simplement votre application comme d'habitude. Lorsque vous ajoutez/modifiez/supprimez un modèle ou un fichier de contrôleur, tous les contrôleurs et modèles sont rechargés sans qu'il soit nécessaire de les baisser/redimensionner.
Par exemple avec nodemon
pour regarder les répertoires api et config
.nodemonignore
Contenu
views/*
.tmp/*
.git/*
Exécutez la commande après avoir créé .nodemonignore
$> nodemon -w api -w config
Exemple pour que le superviseur ignore 3 répertoires
$> supervisor -i .tmp,.git,views app.js
Si vous utilisez Sails 0.11, vous pouvez installer ce crochet pour recharger automatiquement lorsque vous changez de modèle ou de contrôleur (les vues ne nécessitent pas de rechargement):
npm install sails-hook-autoreload
installer nodemon
globalement ou localement.
npm install nodemon --save
npm install nodemon -g
installez sails
localement dans votre projet comme suit
npm install sails --save
puis changez package.json
de
"scripts": {
"debug": "node debug app.js",
"start": "node app.js"
},
à
"scripts": {
"debug": "node debug app.js",
"start": "node app.js",
"dev": "export NODE_ENV=development && nodemon --ignore 'tmp/*' app.js && exit 0"
},
puis
npm run dev
J'ai eu le même problème et je l'ai résolu en utilisant grunt-watch et grunt-forever avec les tâches sails @ beta. Le résultat est 4 commandes grunt:
UPDATE: les tâches sont disponibles dans la version actuelle de voiles (ce n'est plus la version bêta:>)
Voici le code - j'utilise sails @ beta, qui inclut un répertoire tâches , je ne sais pas s'il est inclus dans les versions précédentes:
Tout d’abord, vous devez installer pour toujours dans votre répertoire voiles:
npm install grunt-forever --save-dev
tasks/config/forever.js Configurez la tâche pour toujours.
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 la tâche de surveillance afin d'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 Enregistrez vos tâches personnalisées (ce fichier peut être renommé comme vous le souhaitez)
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 pouvoir utiliser
grunt startWatch
et faites attendre votre serveur que les modifications soient redémarrées:>
J'espère que cela a aidé!
Mieux vaut utiliser
npm install -g nodemon
j'utilise ceci, et cela aidera à améliorer ma vitesse de développement. pas besoin de modifier aucun fichier pour celui-ci!.
après l'installation
nodemon app.js
Pour ceux qui viennent à cette question maintenant, il semble que cela n’est plus nécessaire - une application lancée avec sails lift
aura une tâche de surveillance en cours d'exécution et les modifications de code seront visibles sans redémarrage.
Je n'avais pas réalisé que cela se passait au début car rien n'indique ce qui se passe dans la console, mais cela semble fonctionner sans redémarrage (j'utilise Sails 0.11).