工程化起步(一):Grunt

一融蹂、什么是Grunt

Grunt是一個(gè)任務(wù)管理器拟烫,可以使用它來(lái)校驗(yàn)Javascript語(yǔ)法、css壓縮肚逸、Sass編譯等一些前端工程化的任務(wù)。借用官網(wǎng)的說(shuō)法就是“對(duì)于需要反復(fù)重復(fù)的任務(wù)彬坏,例如壓縮朦促、編譯、單元測(cè)試栓始、linting等务冕,自動(dòng)化工具可以減輕你的勞動(dòng),簡(jiǎn)化你的工作幻赚。當(dāng)你在 Gruntfile 文件正確配置好了任務(wù)禀忆,任務(wù)運(yùn)行器就會(huì)自動(dòng)幫你或你的小組完成大部分無(wú)聊的工作÷淠眨”

二箩退、安裝及原理

2.1 安裝命令

Grunt是基于Node.js運(yùn)行并通過(guò)npm安裝和管理的,安裝命令如下

npm install -g grunt-cli

在安裝的時(shí)候佳谦,可能會(huì)遇到權(quán)限問(wèn)題戴涝,所以,我們?cè)趌inux/mac系統(tǒng)上需要

sudo npm install -g grunt-cli

windows環(huán)境下需要用管理員模式來(lái)執(zhí)行該命令。

2.2 原理工作

運(yùn)行g(shù)runt的時(shí)候啥刻,它就是利用Node.js提供的require方法來(lái)找到本地安裝的grunt奸鸯。找到后,腳手架(CLI)加載Grunt郑什,然后通過(guò)Gruntfile中的配置信息府喳,執(zhí)行你自己配置的任務(wù),所以說(shuō)蘑拯,一個(gè)Grunt管理工具钝满,最重要的是Gruntfile這個(gè)文件,因?yàn)槔锩娲娣胖覀兊膖ask任務(wù)申窘。

Gruntfile文件的主要作用有兩個(gè):

  • 配置或定義自己的任務(wù)task

  • 加載grunt插件


三弯蚜、搭建

對(duì)于一個(gè)新的前端項(xiàng)目搭建,我們會(huì)如何配合grunt來(lái)做呢剃法?

  • 1.首先創(chuàng)建一個(gè)文件夾(目錄)碎捺,例如叫project

  • 2.然后進(jìn)入project的根目錄,我們通過(guò)npm init先把package.json這個(gè)文件創(chuàng)建起來(lái)贷洲,新手的話收厨,可以直接一直按回車一直按到創(chuàng)建完畢,以后會(huì)詳細(xì)說(shuō)這個(gè)npm init創(chuàng)建package.json里面的內(nèi)容究竟有什么用优构。

  • 3.現(xiàn)在在package.json同級(jí)目錄下(即project的根目錄)诵叁,創(chuàng)建一個(gè)名字為Gruntfile.js,然后編寫以下代碼

但是現(xiàn)在執(zhí)行g(shù)runt的話就會(huì)報(bào)錯(cuò),為什么呢钦椭,因?yàn)樾枰惭bGruntfile當(dāng)中使用了的插件拧额,例如現(xiàn)在用到了grunt-contrib-uglify所以我們需要通過(guò)以下命令安裝一下。

npm install grunt-contrib-uglify --save-dev

這時(shí)候grunt-contrib-uglify這個(gè)名稱和對(duì)應(yīng)它的版本會(huì)寫入到package.json

OK彪腔!侥锦,到了這里就可以去到project的根目錄運(yùn)行grunt命令了,如果沒(méi)有任何參數(shù)帶上德挣,就是執(zhí)行default定義的任務(wù)恭垦。registerTask函數(shù)有2個(gè)參數(shù),自定義的任務(wù)名和任務(wù)列表格嗅,任務(wù)列表就是一個(gè)字符串?dāng)?shù)組番挺,可以指定一個(gè)或多個(gè)任務(wù)。

grunt.registerTask注冊(cè)完任務(wù)后吗浩,就可以執(zhí)行g(shù)runt命令了建芙,例如"grunt", "grunt default", "grunt uglify"等没隘。

現(xiàn)在的目錄結(jié)構(gòu)就是


四懂扼、插件介紹

Grunt的插件是有很多的,但是經(jīng)常用的,就那幾個(gè)阀湿,現(xiàn)在就總結(jié)一下赶熟,哈。

插件名稱 插件描述
grunt-contrib-watch 監(jiān)控文件有修改的時(shí)候陷嘴,運(yùn)行指定的任務(wù)
grunt-contrib-clean 刪除指定的文件和文件夾
grunt-contrib-copy 復(fù)制指定的文件和文件夾
grunt-contrib-uglify 使用uglifyJS壓縮js文件
grunt-contrib-jshint 使用JSHint驗(yàn)證Js文件
grunt-contrib-concat 合并多個(gè)文件
grunt-contrib-less 將Less文件編譯成css文件
grunt-contrib-cssmin 壓縮css文件

目前這些就是最常用的插件映砖,用在項(xiàng)目上比較多,如果需要的話灾挨,可以上官網(wǎng)http://www.gruntjs.net/plugins來(lái)查看插件列表邑退。

五,總結(jié)

Grunt的使用大概就是這樣劳澄,到這里應(yīng)該感覺(jué)到工程化的魅力地技,但是本人在實(shí)際開(kāi)發(fā)grunt是用得較少,因?yàn)橛術(shù)ulp的出現(xiàn)后秒拔,grunt我可以說(shuō)是棄用了莫矗,但是為什么我還要介紹grunt呢,其實(shí)就想大家對(duì)工程化中的任務(wù)管理task這個(gè)東西有一個(gè)了解砂缩,因?yàn)榈搅撕竺鎔ulp的使用作谚,也是和grunt差不多,可能就是一些配置上的寫法差異庵芭,到這里妹懒,希望大家多練習(xí)一下,跟著例子喳挑,搭建一個(gè)屬于自己的一個(gè)grunt工程化項(xiàng)目彬伦,以后就可以復(fù)用你自己搭建的工程化項(xiàng)目來(lái)進(jìn)行開(kāi)發(fā)了。

?上圖就是Grunt的Logo伊诵,大家請(qǐng)認(rèn)識(shí)下单绑,以后可以適當(dāng)?shù)脑诿嬖囇b裝逼,哈曹宴。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末搂橙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子笛坦,更是在濱河造成了極大的恐慌区转,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件版扩,死亡現(xiàn)場(chǎng)離奇詭異废离,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)礁芦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蜻韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)悼尾,“玉大人,你說(shuō)我怎么就攤上這事肖方」胛海” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵俯画,是天一觀的道長(zhǎng)析桥。 經(jīng)常有香客問(wèn)我,道長(zhǎng)艰垂,這世上最難降的妖魔是什么泡仗? 我笑而不...
    開(kāi)封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮猜憎,結(jié)果婚禮上沮焕,老公的妹妹穿的比我還像新娘。我一直安慰自己拉宗,他們只是感情好峦树,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著旦事,像睡著了一般魁巩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姐浮,一...
    開(kāi)封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天谷遂,我揣著相機(jī)與錄音,去河邊找鬼卖鲤。 笑死肾扰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛋逾。 我是一名探鬼主播集晚,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼区匣!你這毒婦竟也來(lái)了偷拔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤亏钩,失蹤者是張志新(化名)和其女友劉穎莲绰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姑丑,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛤签,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了栅哀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片震肮。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡踏枣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钙蒙,到底是詐尸還是另有隱情,我是刑警寧澤间驮,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布躬厌,位于F島的核電站,受9級(jí)特大地震影響竞帽,放射性物質(zhì)發(fā)生泄漏扛施。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一屹篓、第九天 我趴在偏房一處隱蔽的房頂上張望疙渣。 院中可真熱鬧,春花似錦堆巧、人聲如沸妄荔。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)啦租。三九已至,卻和暖如春荒揣,著一層夾襖步出監(jiān)牢的瞬間篷角,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工系任, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恳蹲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓俩滥,卻偏偏與公主長(zhǎng)得像嘉蕾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霜旧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 快速入門 Grunt和 Grunt 插件是通過(guò) npm 安裝并管理的荆针,npm是 Node.js 的包管理器。Gru...
    你不知道的你我不知道的我閱讀 370評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理颁糟,服務(wù)發(fā)現(xiàn)航背,斷路器,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 快速入門 Grunt和 Grunt 插件是通過(guò) npm 安裝并管理的棱貌,npm是 Node.js 的包管理器玖媚。 在安...
    angelwgh閱讀 1,114評(píng)論 0 0
  • 《等腰三角形》教學(xué)設(shè)計(jì),不同于前面的《三角形》復(fù)習(xí)課婚脱,也與《尺規(guī)作圖》這樣的歸納提升課有所區(qū)別今魔。前兩種都是在學(xué)生已...
    不忘初心靜等花開(kāi)閱讀 884評(píng)論 0 1
  • 三年過(guò)去了勺像,素織看著窗外的雪景,不禁深深嘆了口氣错森,自從三年前附子把他從家里送出來(lái)后吟宦,就再也沒(méi)來(lái)看過(guò)他,他雖沒(méi)說(shuō)什么...
    誰(shuí)還沒(méi)有脾氣閱讀 94評(píng)論 0 0