gruntjs服务器任务的目的是什么?
我正在学习如何推动使用gruntjs。 我发现服务器的任务,但我不明白的地步。
我可以使用服务器任务映射级联/缩小文件来testing我的应用程序(使用backbone.js)而不移动或将源文件放在Web服务器根目录中? 没有Apache例如。
如果不是,那么服务器任务应该使用什么?
server
任务用于启动base
path设置为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我的应用程序[…]
连接和缩小有自己的专用任务 – concat
和min
– 但可以与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齐全的服务器。