运行与咕噜2个异步任务(Running 2 async tasks with grunt)

2019-08-16 20:14发布

我工作的一个小节点项目,我使用的客户端代码CoffeeScript的少。 我试图用咕噜建立我的开发环境。 我实现了自定义的咕噜任务运行的服务器是这样的:

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"

我也想用咕噜-的contrib手表插件运行“手表”的任务:

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

现在的问题是:如何使这两个任务(手表和服务器)同时运行? 我想有一台服务器和运行,不希望每次一些客户端代码改变时重新加载它。 提前致谢

Answer 1:

其前缀为您的手表任务,并摆脱了done = do @async服务器任务内。

tasks: ['server', 'coffee']

你想在指定的服务器任务的步兵配置的选项是“长时间运行”与否。 然后,你可以调用@async只有当你需要它是长期运行(不带手表的任务)。



Answer 2:

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

  1. 咕噜平行
  2. 咕噜并发


Answer 3:

我在这同不能够启动这两个表,并从繁重的任务连接服务器的问题。

为了解决这个问题,我在Gruntfile使用咕噜-EXEC启动服务器作为后台进程

号(&)在结束grunt connect:preview &是什么启动服务器作为后台进程。

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

然后注册繁重的任务,这样的

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

我们有了一个更好的办法做到这一点,但到目前为止,这是我能想到的最好的。



文章来源: Running 2 async tasks with grunt