Après grunt build
que mon application AngularJS dans mon répertoire dist
, je voudrais la tester avec grunt server
. Le problème est que grunt server
sert tout le code dans mon app/
répertoire. En outre, n'oubliez pas que j'ai créé mon application avec yo angular
.
Voici le code de tâche du serveur dans mon Gruntfile.js
grunt.registerTask('server', [
'clean:server',
'coffee:dist',
'compass:server',
'livereload-start',
'connect:livereload',
'open',
'watch'
]);
Existe-t-il un moyen de faire grunt server
ne sert que le code construit dans mon dist/
répertoire?
Que vous puissiez ou non le faire n'est pas important. Ce qui est important, c'est que vous ne devez pas utiliser le serveur grunt pour cela. La tâche serveur dans grunt comme vous pouvez le voir fait beaucoup de choses dont vous n'avez pas besoin dans un dossier dist, ainsi que le fait que ils seront tous codés en dur pour votre dossier d'application.
Si vous voulez simplement essayer le résultat du dossier dist, ce que vous devez faire est simplement de cd dans le répertoire dist puis de démarrer un simple serveur HTTP comme celui qui vient avec python.
python -m SimpleHTTPServer
Cela devrait démarrer un petit serveur pour que vous puissiez essayer le répertoire dist.
La réponse très courte est
grunt serve:dist
Cela fonctionne avec mon Gruntfile.js
Généré par yeoman qui contient:
grunt.registerTask('serve', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'connect:dist:keepalive']);
}
grunt.task.run([
'clean:server',
'bower-install',
'concurrent:server',
'autoprefixer',
'connect:livereload',
'watch'
]);
});
Le grunt serve:dist
la réponse est la bonne, mais le processus est assez ennuyeux car vous devez compiler tout votre projet en mode production à chaque fois que vous appelez grunt serve: dist.
Ce que j'ai fait, c'est que j'ai modifié le Gruntfile.js
dans la tâche serve
, en supprimant la tâche build
du paramètre envoyé à run
. Vous devez d'abord créer manuellement avec grunt
ou grunt build
puis appelez grunt serve:dist
et ouvrez manuellement l'URL.
Bien que d'autres n'aient pas conseillé de le faire, je pense que c'est ce que vous recherchez. Je fais quelque chose comme ça dans mon fichier server.js lorsque j'utilise express.
if (process.env.NODE_ENV == 'production') {
app.use(express.static('/dist'));
}else{
app.use(express.static('/app'));
}
J'espère que cela t'aides!