11

我正在开发一个小型节点项目,我使用咖啡脚本而不是客户端代码。我正在尝试使用 grunt 设置我的开发环境。我已经为运行服务器实现了自定义 grunt 任务,如下所示:

start = require './start' #just a function to start express.js application
grunt.registerTask 'server', 'Starting server', ->
    grunt.log.write 'Preparing server to start'
    done = do @async
    start (err) ->
        grunt.log.write "server running at localhost:4000"

我还想使用 grunt-contrib-watch 插件运行“watch”任务:

grunt.initConfig
    watch:
        coffee:
            files: ['public/coffee/**/*.coffee']
            tasks: ['coffee']
        jade:
            files: ['public/jade/**/*.jade']
            tasks: ['jade']
        less:
            files: ['public/less/**/*.less']
            tasks: ['less']

问题是:如何让这两个任务(watch 和 server)同时运行?我想让服务器启动并运行,并且不想在每次更改某些客户端代码时重新加载它。提前致谢

4

3 回答 3

8

您可以使用以下两个包中的任何一个同时运行两个或多个任务:

  1. 咕噜并行
  2. 咕噜并发
于 2013-10-23T07:46:30.703 回答
5

将其添加到您的监视任务中,并摆脱done = do @async服务器任务的内部。

tasks: ['server', 'coffee']

您想在 Grunt 配置中为服务器任务指定一个选项是否“长时间运行”。@async然后,只有在需要长时间运行(没有监视任务)时才可以调用。

于 2013-02-09T15:55:08.403 回答
0

我遇到了同样的问题,即无法从 grunt 任务中同时启动监视和连接服务器。

为了解决这个问题,我在 Gruntfile 中使用 grunt-exec 将服务器作为后台进程启动

末尾的和号 (&)grunt connect:preview &将服务器作为后台进程启动。

,exec: {
  start_server: {
    command: 'grunt connect:preview &'
  }
}

然后像这样注册 grunt 任务

grunt.registerTask('preview', ['clean:preview', 'template', 'exec', 'watch' ]);

必须有更好的方法来做到这一点,但到目前为止,这是我能想到的最好的方法。

于 2013-03-17T19:34:26.710 回答