32

grunt build我的 AngularJS 应用程序添加到我的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

4 回答 4

116

非常简短的答案是

grunt serve:dist

这适用于我的 yeoman-generatedGruntfile.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'
    ]);
  });
于 2014-01-22T14:32:57.193 回答
30

你能不能做到并不重要。重要的是您不应该为此使用 grunt 服务器。如您所见,grunt 中的服务器任务执行了许多您在 dist 文件夹中不需要的事情,以及它们都将针对您的 app 文件夹进行硬编码的事实。

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

python -m SimpleHTTPServer

这应该启动一个小型服务器,让您尝试 dist 目录。

于 2013-08-20T21:57:32.807 回答
3

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

我所做的是我修改了Gruntfile.js任务中的,从发送到的参数serve中删除了任务。您需要先使用or手动构建,然后调用并手动打开 URL。buildrungruntgrunt buildgrunt serve:dist

于 2014-05-28T18:12:11.113 回答
3

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

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

希望这可以帮助!

于 2013-11-11T21:47:34.767 回答