grunt插件之connect

啟動一個(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 包含pathoptions參數(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

類型:BooleanNumber
默認(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

類型: BooleanStringObject
默認(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

類型:FunctionArray
默認(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

類型:FunctionArray
默認(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:site1grunt 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
          }
        }
      }
    }
  }
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咐扭,一起剝皮案震驚了整個(gè)濱河市芭挽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌草描,老刑警劉巖览绿,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件策严,死亡現(xiàn)場離奇詭異穗慕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)妻导,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門逛绵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人倔韭,你說我怎么就攤上這事术浪。” “怎么了寿酌?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵胰苏,是天一觀的道長。 經(jīng)常有香客問我醇疼,道長硕并,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任秧荆,我火速辦了婚禮倔毙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乙濒。我一直安慰自己陕赃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布颁股。 她就那樣靜靜地躺著么库,像睡著了一般。 火紅的嫁衣襯著肌膚如雪甘有。 梳的紋絲不亂的頭發(fā)上廊散,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機(jī)與錄音梧疲,去河邊找鬼允睹。 笑死运准,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缭受。 我是一名探鬼主播胁澳,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼米者!你這毒婦竟也來了韭畸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蔓搞,失蹤者是張志新(化名)和其女友劉穎胰丁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喂分,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡锦庸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蒲祈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甘萧。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梆掸,靈堂內(nèi)的尸體忽然破棺而出扬卷,到底是詐尸還是另有隱情,我是刑警寧澤酸钦,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布怪得,位于F島的核電站,受9級特大地震影響卑硫,放射性物質(zhì)發(fā)生泄漏徒恋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一拔恰、第九天 我趴在偏房一處隱蔽的房頂上張望因谎。 院中可真熱鬧,春花似錦颜懊、人聲如沸财岔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匠璧。三九已至,卻和暖如春咸这,著一層夾襖步出監(jiān)牢的瞬間夷恍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工媳维, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酿雪,地道東北人遏暴。 一個(gè)月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像指黎,于是被迫代替她去往敵國和親朋凉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容