如何在dist目录而不是app目录中运行grunt服务器?

时间:2013-08-20 21:22:12

标签: angularjs gruntjs yeoman

将我的AngularJS应用grunt build发送到我的dist目录后,我想用grunt server对其进行测试。问题是grunt server只提供了app/目录中的所有代码。另外,请注意我使用yo angular创建了我的应用。

以下是 Gruntfile.js

中的服务器任务代码
grunt.registerTask('server', [
    'clean:server',
    'coffee:dist',
    'compass:server',
    'livereload-start',
    'connect:livereload',
    'open',
    'watch'
  ]);

有没有办法让grunt server仅提供我dist/目录中的构建代码?

4 个答案:

答案 0 :(得分:116)

答案非常简短

grunt serve:dist

这适用于我自己生成的Gruntfile.js,其中包含:

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

答案 1 :(得分:29)

你能不能做到这一点并不重要。 重要的是你不应该使用grunt服务器。你可以看到grunt中的服务器任务做了很多你在dist文件夹中不需要的东西,以及它们都将被硬编码为您的app文件夹。

如果你只是想尝试dist文件夹的结果,你应该做的只是cd进入dist目录,然后启动一个简单的HTTP服务器,就像p​​ython附带的那样。

python -m SimpleHTTPServer

那应该启动一个小服务器来尝试远程目录。

答案 2 :(得分:3)

虽然其他人没有建议这样做,但我相信这正是你要找的。使用express时,我在server.js文件中执行类似的操作。

if (process.env.NODE_ENV == 'production') {
    app.use(express.static('/dist'));
}else{
    app.use(express.static('/app'));       
}

希望这有帮助!

答案 3 :(得分:3)

grunt serve:dist答案是正确答案,但这个过程非常烦人,因为每次调用grunt serve时都需要将整个项目编译成生产模式:dist。

我所做的是修改了Gruntfile.js任务中的serve,从发送到build的参数中删除了run任务。您需要先使用gruntgrunt build手动构建,然后调用grunt serve:dist并手动打开该网址。