我正在开发一个小型节点项目,我使用coffeescript而不是客户端代码。我正在尝试使用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']
问题是:如何使这两项任务(手表和服务器)同时运行?我希望服务器启动并运行,并且不希望每次更改某些客户端代码时重新加载它。提前致谢
答案 0 :(得分:8)
您可以使用以下任意一个包同时运行两个或更多任务:
答案 1 :(得分:5)
将它添加到您的监视任务中,并删除服务器任务中的done = do @async
。
tasks: ['server', 'coffee']
您希望在Grunt配置中指定一个选项,以使服务器任务成为长期运行的"或不。然后,只有在需要长时间运行时才能调用@async
(没有监视任务)。
答案 2 :(得分:0)
我遇到了同样的问题,即无法通过繁琐的任务启动监视和连接服务器。
为了解决这个问题,我在我的Gruntfile中使用grunt-exec启动服务器作为后台进程
grunt connect:preview &
末尾的与号(&)是启动服务器作为后台进程的原因。
,exec: {
start_server: {
command: 'grunt connect:preview &'
}
}
然后像这样注册grunt任务
grunt.registerTask('preview', ['clean:preview', 'template', 'exec', 'watch' ]);
必须有更好的方法来做到这一点,但到目前为止,这是我能想到的最好的。