gruntjs服务器任务的目的是什么?

我正在学习如何推动使用gruntjs。 我发现服务器的任务,但我不明白的地步。

我可以使用服务器任务映射级联/缩小文件来testing我的应用程序(使用backbone.js)而不移动或将源文件放在Web服务器根目录中? 没有Apache例如。

如果不是,那么服务器任务应该使用什么?

server任务用于启动basepath设置为Web根目录的静态服务器。

示例:将./web-root服务为http://localhost:8080/

 grunt.initConfig({ server: { port: 8080, base: './web-root' } }); 

它的function类似于Apache服务器,根据path提供静态文件,但通过连接使用http模块进行设置( 源 )。

如果您需要的服务不仅仅是静态文件,那么您将需要考虑定义一个自定义的server任务 :

 grunt.registerTask('server', 'Start a custom web server.', function() { grunt.log.writeln('Starting web server on port 1234.'); require('./server.js').listen(1234); }); 

和自定义服务器实例:

 // server.js var http = require('http'); module.exports = http.createServer(function (req, res) { // ... }); 

我可以使用服务器任务映射级联/缩小文件来testing我的应用程序[…]

连接和缩小有自己的专用任务 – concatmin – 但可以与server任务一起使用来完成所有的3。


编辑

如果你想让服务器保持一段时间(以及grunt),你可以将任务定义为asynchronous的 (使用服务器的'close'事件 ):

 grunt.registerTask('server', 'Start a custom web server.', function() { var done = this.async(); grunt.log.writeln('Starting web server on port 1234.'); require('./server.js').listen(1234).on('close', done); }); 

server任务现在是connect任务,它包含在grunt-contrib-connect包中。

connect任务启动连接Web服务器。

用这个命令安装这个插件:

 npm install grunt-contrib-connect --save-dev 

注意: --save-dev devDependencies --save-dev包含devDependencies的包,请参阅https://npmjs.org/doc/install.html

一旦插件被安装,它可以在你的Gruntfile里面用这行JavaScript来启用:

 grunt.loadNpmTasks('grunt-contrib-connect'); 

使用grunt connect命令运行此任务。

请注意,此服务器只在运行grunt时才运行。 一旦咕噜的任务完成,Web服务器停止。 这个行为可以通过keepalive选项来改变,并且可以通过像grunt connect:targetname:keepalive这样的任务运行来启用ad-hoc。 targetname名称等于下面的代码示例中的“服务器”。

在这个例子中, grunt connect (或者更加复杂的grunt connect:server )将启动一个静态web服务器在http://localhost:9001/ ,其基本path被设置为相对于Gruntfile的www-root目录,之后运行的任务将能够访问它。

 // Project configuration. grunt.initConfig({ connect: { server: { options: { port: 9001, base: 'www-root' } } } }); 

服务器任务的重点在于对静态文件进行快速和肮脏的访问以进行testing。 grunt服务器不是生产服务器环境。 实际上应该只在咕噜生命周期中才能使用静态testing资产到testing环境。 在生产环境中使用可能由NPM生命周期脚本控制的function齐全的服务器。