啟動一個(gè)web服務(wù)器連接
啟動任務(wù)
使用grunt connect
命令運(yùn)行此任務(wù)吊履。
請注意洲炊,只有g(shù)runt正在運(yùn)行趾盐,該服務(wù)器才會運(yùn)行甥啄。一旦grunt的任務(wù)完成吃环,Web服務(wù)器就停止楔敌〔┠裕可以通過keepalive選項(xiàng)來設(shè)置添履,并且可以通過運(yùn)行任務(wù)來臨時(shí)啟用 grunt connect:keepalive
此任務(wù)旨在與隨后運(yùn)行的另一個(gè)任務(wù)一起使用屁倔,如grunt-contrib-qunit插件 的qunit
任務(wù)。
Options參數(shù)
port
類型: Integer
(整數(shù))
默認(rèn)值:8000
網(wǎng)絡(luò)服務(wù)器將響應(yīng)的端口暮胧。如果指定的端口已經(jīng)在使用中锐借,則該任務(wù)將失敗(除非設(shè)置了useAvailablePort)往衷。您可以使用特殊值0
或'?'
使用系統(tǒng)分配的端口钞翔。
protocol
類型:String
默認(rèn)值:'http'
網(wǎng)絡(luò)通信協(xié)議,可以是'http'
, 'http2'
或'https'
.
hostname
類型:String
默認(rèn)值:0.0.0.0
可以訪問網(wǎng)絡(luò)服務(wù)器的主機(jī)名.
將其設(shè)置為'*'
,像“ 0.0.0.0”
,將使服務(wù)器可以從任何本地局域網(wǎng) 的IPv4地址訪問 '127.0.0.1'席舍,并將IP分配給以太網(wǎng)或無線接口如'192.168.0.x'或'10.0.0.x'嗅战。
如果open設(shè)置為true,該hostname設(shè)置將用于生成瀏覽器打開的URL俺亮,默認(rèn)為localhost指定通配符主機(jī)名驮捍。
base
類型:String
or Array
or Object
默認(rèn)值:.
-
String
提供文件的基本路徑(或根目錄),默認(rèn)為 Gruntfile.js 所在的目錄 -
Array
多個(gè)被映射到網(wǎng)站虛擬根目錄的物理路徑 -
Object
包含path
和options
參數(shù),options 會傳遞給 serve-state 模塊處理。
directory
類型:String
默認(rèn)值:null
設(shè)置到希望能夠?yàn)g覽的目錄 用于覆蓋base選項(xiàng)的可瀏覽目錄脚曾。
keepalive
類型:Boolean
默認(rèn)值:false
讓服務(wù)器持續(xù)運(yùn)行东且。請注意,如果啟用此選項(xiàng)本讥,則此任務(wù)之后指定的任何任務(wù)將永遠(yuǎn)不會運(yùn)行珊泳。默認(rèn)情況下鲁冯,一旦grunt的任務(wù)完成,Web服務(wù)器停止色查。此選項(xiàng)會更改該行為薯演。
此選項(xiàng)也可以通過運(yùn)行任務(wù)進(jìn)行臨時(shí)啟用 grunt nnect:targetname:keepalive
debug
類型:Boolean
默認(rèn)值:false
將debug選項(xiàng)設(shè)置為true
以啟用日志記錄,而不是使用--debug
標(biāo)志秧了。
livereload
類型:Boolean
或Number
默認(rèn)值:false
設(shè)置true
或端口號跨扮,以使用connect-livereload將實(shí)時(shí)重新加載腳本的標(biāo)記注入到頁面中。
這不執(zhí)行實(shí)時(shí)重新加載验毡。它旨在與grunt-contrib-watch或另一個(gè)任務(wù)一起使用衡创,在文件更改時(shí)將觸發(fā)實(shí)時(shí)重新加載服務(wù)器。
open
類型: Boolean
或String
或Object
默認(rèn)值:false
在默認(rèn)瀏覽器中打開提供的頁面晶通。
這可以是以下之一:
指定
true
打開默認(rèn)服務(wù)器URL(從protocol璃氢,hostname
和port
設(shè)置生成)指定
URL
會打開該URL
使用以下鍵指定一個(gè)對象,直接配置為open:
{
target : ' http:// localhost:8000 '狮辽,// target url打開
appName : ' open '一也,//打開應(yīng)用程序的名稱,即:open喉脖,start塘秦,xdg-open
callback : function(){} / /當(dāng)應(yīng)用程序打開時(shí)調(diào)用
}
useAvailablePort
類型:Boolean
默認(rèn)值:false
如果true
任務(wù)將在set port
選項(xiàng)之后查找下一個(gè)可用端口。
onCreateServer
類型:Function
或Array
默認(rèn)值:null
創(chuàng)建服務(wù)器對象后要調(diào)用的函數(shù)动看,以允許集成需要訪問的庫來連接服務(wù)器對象尊剔。一個(gè)Socket.IO
示例:
grunt.initConfig({
connect: {
server: {
options: {
port: 8000,
hostname: '*',
onCreateServer: function(server, connect, options) {
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
// do something with socket
});
}
}
}
}
});
middleware
類型:Function
或Array
默認(rèn)值:使用 options.base 處理靜態(tài)文件和目錄瀏覽的數(shù)組
如果提供了一個(gè)數(shù)組的話,就會取代默認(rèn)的服務(wù)器處理菱皆,直接采用自定義的中間件進(jìn)行處理须误,這需要我們完全定義服務(wù)器中的處理。
grunt.initConfig({
connect: {
server: {
options: {
middleware: [
function myMiddleware(req, res, next) {
res.end('Hello, world!');
}
],
},
},
},
});
如果是函數(shù)的話仇轻,會自動添加默認(rèn)的靜態(tài)文件處理中間件京痢,再執(zhí)行自定義的中間件函數(shù)。
grunt.initConfig({
connect: {
server: {
options: {
middleware: function(connect, options, middlewares) {
// inject a custom middleware into the array of default middlewares
middlewares.unshift(function(req, res, next) {
if (req.url !== '/hello/world') return next();
res.end('Hello, world from port #' + options.port + '!');
});
return middlewares;
},
},
},
},
});
用法示例
基本使用
在這個(gè)例子中篷店,grunt connect
(或更詳細(xì)地grunt connect:server
)將啟動一個(gè)靜態(tài)Web服務(wù)器http://localhost:9001/
祭椰,其基本路徑設(shè)置為www-root
相對于gruntfile
的目錄,任何隨后運(yùn)行的任務(wù)將能夠訪問它疲陕。
// Project configuration.
grunt.initConfig({
connect: {
server: {
options: {
port: 9001,
base: 'www-root'
}
}
}
});
如果您希望Web服務(wù)器使用默認(rèn)選項(xiàng)方淤,只需省略options
對象即可。您仍然需要指定目標(biāo)(在此示例中是uses_defaults
)蹄殃,目標(biāo)的配置對象可以為空或不存在携茂。在這個(gè)例子中,grunt connect
(或更詳細(xì)地grunt connect:uses_defaults
)將使用默認(rèn)選項(xiàng)啟動一個(gè)靜態(tài)Web服務(wù)器诅岩。
// Project configuration.
grunt.initConfig({
connect: {
uses_defaults: {}
}
});
多個(gè)服務(wù)器
您可以通過為每個(gè)服務(wù)器創(chuàng)建目標(biāo)來指定要獨(dú)立運(yùn)行或同時(shí)運(yùn)行的多個(gè)服務(wù)器讳苦。在這個(gè)例子中带膜,運(yùn)行grunt connect:site1
或grunt connect:site2
將啟動相應(yīng)的Web服務(wù)器,但運(yùn)行grunt connect
將運(yùn)行兩個(gè)鸳谜。請注意膝藕,指定了keepalive選項(xiàng)的任何服務(wù)器將阻止任何任務(wù)或目標(biāo)運(yùn)行。
// Project configuration.
grunt.initConfig({
connect: {
site1: {
options: {
port: 9000,
base: 'www-roots/site1'
}
},
site2: {
options: {
port: 9001,
base: 'www-roots/site2'
}
}
}
});
靜態(tài)選項(xiàng)
靜態(tài)服務(wù)器模塊的選項(xiàng).詳見serve-static:
grunt.initConfig({
connect: {
server: {
options: {
port: 8000,
base: {
path: 'www-root',
options: {
index: 'somedoc.html',
maxAge: 300000
}
}
}
}
}
});