grunt入門


</br>

grunt是一個優(yōu)秀的前端的自動化生產(chǎn)工具,最開始作者一直不用這類工具吟吝,感覺麻煩指蚁,但是當(dāng)后面項目大一些后開始嘗試使用菩佑,就一發(fā)不可收拾,但是對于grunt的一些機制原理等凝化,自己也是搗鼓了一些時間稍坯,今天就來總結(jié)一下自己的經(jīng)驗,希望對部分同學(xué)能有一些幫助搓劫。


1.grunt的用處

對于需要反復(fù)重復(fù)的任務(wù)瞧哟,例如壓縮(minification)、編譯枪向、單元測試勤揩、linting等,代碼合并等等遣疯,grunt可以減輕你的勞動雄可,簡化你的工作凿傅。當(dāng)你在 Gruntfile 文件正確配置好了任務(wù),任務(wù)運行器就會自動幫你完成大部分無聊的工作

2.grunt的三要素

  • task
  • target
  • options
先來簡單解釋一下這三個要素吧
1. task

這個就是grunt的任務(wù)数苫,之前提過grunt是用來自動執(zhí)行各種各樣的任務(wù)的聪舒,比如壓縮文件,合并文件虐急,單元測試等等箱残,這些都是一系列任務(wù)

2.target

這個是任務(wù)的目標(biāo),也就是任務(wù)具體做的事止吁,例如有一個合并文件的任務(wù)被辑,這個任務(wù)可以做兩件具體的事:

  • build1:合并a.css和b.css
  • build2:合并a.css和c.css

每一個具體的事情就是一個target

3.options

從字面上就可以理解,這個就是配置敬惦。task或者target的配置盼理,每個task有自己的配置,每個target也可以有自己的配置


開始做個Demo吧

</br>

咱們按順序開始以下幾步吧
  • 裝上node和git俄删,然后新建一個文件夾
  • 在文件夾的根目錄中打開git 執(zhí)行 npm init宏怔,會新建一個package.json文件,只需填寫一下基本內(nèi)容就好畴椰,在此不贅述了臊诊。
  • 全局安裝grunt命令行,執(zhí)行 npm install -g grunt-cli斜脂,這樣后面就可以用grunt命令來執(zhí)行之前我們說的task和target了
  • 安裝grunt和四個插件抓艳,執(zhí)行命令:
    • npm install grunt --save-dev 安裝grunt
    • npm install grunt-contrib-uglify --save-dev 安裝壓縮插件
    • npm install grunt-contrib-watch --save-dev 安裝監(jiān)控文件變化插件
    • npm install grunt-contrib-cssmin --save-dev 安裝css壓縮插件
    • npm install grunt-contrib-csscomb --save-dev 安裝css合并插件
  • 新建一個Gruntfile.js文件,這個文件中主要寫的對各個任務(wù)的配置帚戳,直接貼出一個簡單的Gruntfile.js的文件內(nèi)容吧
module.exports=function(grunt){
// 任務(wù)配置玷或,所有插件的配置信息
grunt.initConfig({
    // watch插件配置信息,用于觀察文件的變化
    watch:{
        build:{
            files:['src/js/*.js','src/css/*.css'],
            tasks:['jshint','uglify','cssmin','csscomb'],
            options:{spawn:false}
        }
    },
    // uglify插件配置信息,用于壓縮文件
    uglify: {
      build: {
        files:{
            'build/js/yourName.min.js':['src/js/test.js']
        } 
      }
    },
    // cssmin插件配置信息销斟,用于壓縮css
    cssmin:{
        options: {
            shorthandCompacting: false,
            roundingPrecision: -1
        },
        build: {
            files: {
              'build/css/output.min.css': ['src/css/*.css']
            }
        }
    },
    // csscomb插件配置信息庐椒,用于合并css
    csscomb: {
        bulid: {
            files:{
                "src/dest/css/output.restored.css":["src/css/test.css"],
                "src/dest/css/output2.restored.css":["src/css/test2.css"]
            }
        }
    }
});
// 加載包含任務(wù)的插件
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-csscomb');
// 默認(rèn)被執(zhí)行的任務(wù)列表。
grunt.registerTask('default', ['uglify','cssmin','csscomb','watch']);
};

在上面的代碼中蚂踊,有watch,uglify笔宿,cssmin犁钟,csscomb四個task,每個task里面都有自己的options和target(uglify里沒有options因為options并不是必須的泼橘,根據(jù)需求而定)</br>

對于每個task的build target里都有files屬性涝动,files屬性里主要是輸入和輸出文件,files中的輸入輸出文件有四種寫法,在grunt中文官網(wǎng)有詳細(xì)描述炬灭,這里我就不細(xì)說了醋粟。
</br>
對于每個task的options,不同插件有不同的配置方式,需要各位在使用對應(yīng)的插件時米愿,去grunt插件官網(wǎng)看看基本的配置方法和插件描述

  • 在項目根目錄打開git厦凤,如果直接執(zhí)行g(shù)runt命令,則會執(zhí)行組合的‘default’任務(wù)育苟,也就是uglify ,cssmin,csscomb,watch四個task,如果需要執(zhí)行指定的單個task较鼓,例如uglify,則執(zhí)行命令grunt uglify违柏,如果需要執(zhí)行task的具體target博烂,例如cssmin的build,則執(zhí)行命令grunt cssmin:build

總結(jié)一下漱竖,grunt這個工具的目的其實就是讓我們方便地使用各種插件來幫助我們進行開發(fā)禽篱,而它的工作機制其實就是:首先我們用node安裝好了基本的環(huán)境后,需要用什么插件就node install 插件名稱馍惹,然后在Gruntfile.js中配置這個插件task的options和target就行了谆级,最后按需執(zhí)行插件!

</br>

這篇其實算不上一個grunt的完整Demo讼积,比如路徑配置肥照,files,特殊插件配置和更靈活的用法都沒介紹勤众,我也沒打算做這樣一個教程舆绎,因為也已經(jīng)有不少優(yōu)秀的grunt教程了,grunt中文網(wǎng)也有们颜。不過單看教程并不能讓我們更好地使用grunt吕朵,后面需要用到的其他插件需要去官網(wǎng)看看插件的基本配置和介紹,一些其他用法也都是需要去官網(wǎng)或者其它大牛博客看看的窥突,我現(xiàn)在只是從理解grunt本身這方面來做的一個淺顯的介紹努溃,希望能幫助到部分同學(xué),共勉阻问!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梧税,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子称近,更是在濱河造成了極大的恐慌第队,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刨秆,死亡現(xiàn)場離奇詭異凳谦,居然都是意外死亡,警方通過查閱死者的電腦和手機衡未,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門尸执,熙熙樓的掌柜王于貴愁眉苦臉地迎上來家凯,“玉大人,你說我怎么就攤上這事如失“砘澹” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵岖常,是天一觀的道長驯镊。 經(jīng)常有香客問我,道長竭鞍,這世上最難降的妖魔是什么板惑? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮偎快,結(jié)果婚禮上冯乘,老公的妹妹穿的比我還像新娘。我一直安慰自己晒夹,他們只是感情好裆馒,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丐怯,像睡著了一般喷好。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上读跷,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天梗搅,我揣著相機與錄音,去河邊找鬼效览。 笑死无切,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的丐枉。 我是一名探鬼主播哆键,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘦锹!你這毒婦竟也來了籍嘹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沼本,失蹤者是張志新(化名)和其女友劉穎噩峦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抽兆,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年族淮,在試婚紗的時候發(fā)現(xiàn)自己被綠了辫红。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凭涂。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贴妻,靈堂內(nèi)的尸體忽然破棺而出切油,到底是詐尸還是另有隱情,我是刑警寧澤名惩,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布澎胡,位于F島的核電站,受9級特大地震影響娩鹉,放射性物質(zhì)發(fā)生泄漏攻谁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一弯予、第九天 我趴在偏房一處隱蔽的房頂上張望戚宦。 院中可真熱鬧,春花似錦锈嫩、人聲如沸受楼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽艳汽。三九已至,卻和暖如春对雪,著一層夾襖步出監(jiān)牢的瞬間河狐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工慌植, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留甚牲,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓蝶柿,卻偏偏與公主長得像丈钙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子交汤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

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

  • Grunt入門(一) 什么是grunt Grunt就和photoshop里面的插件一樣雏赦,它能夠幫我們自動完成一些反...
    wheato閱讀 2,239評論 0 9
  • 快速入門 Grunt和 Grunt 插件是通過 npm 安裝并管理的,npm是 Node.js 的包管理器芙扎。Gru...
  • Grunt是一個JavaScript任務(wù)運行器 Grunt基于Node.js星岗,用JS 開發(fā),這樣就可以借助Node...
    李霖弢閱讀 522評論 0 0
  • 對網(wǎng)站資源進行優(yōu)化戒洼,并使用不同瀏覽器測試并不是網(wǎng)站設(shè)計過程中最有意思的部分俏橘,但是這個過程中的很多重復(fù)的任務(wù)能夠使用...
    懵逼js閱讀 1,069評論 0 8
  • 我家住在黃土高坡…… 這首震撼我心靈的歌謠早已奏響五湖四海 那年我走出了黃土高坡 我只在心中烙下了您的模樣 屹立在...
    星輝歲月閱讀 379評論 0 1