web-dev-qa-db-fra.com

Comment exécuter le serveur grunt dans le répertoire dist au lieu du répertoire app?

Après grunt buildque 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?

33
user883807

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.

29
DerekR

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

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.

3
Ramiro Araujo

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!

3
Mackenzie Browne