前端自動化 grunt的簡單使用

2022-03-25 03:05:30 字數 2745 閱讀 8191

現在前端自動化已經是家常便飯,各種工具也是層出不窮,grunt、gulp、webpack是應用最廣的三種工具,雖然grunt看似已垂垂老矣,但是以前寫的很多專案一直用的就是grunt,溫故方能知新,這裡把grunt的基本操作再記錄一下。

開始使用grunt很簡單,在專案的根目錄中新增兩份檔案:package.json 和 gruntfile.js。npm安裝模組和外掛程式的操作就不細說了,主要是在gruntfile.js中填寫配置**。**目錄結構如下:

然後我們就來介紹最常用的幾個外掛程式:

合併**是我們最需要的乙個功能了,當專案變大並且模組很多的時候,就拿我們這個angular的單頁應用專案來說,index頁面會有一列的js**,如下圖所示:

我們需要將這些js合併為乙個檔案,大大減少網路請求數量因此來提公升效能。grunt-contrib-concat完美勝任,下面我們來看看基本配置用法:

module.exports = function(grunt)          

}});

grunt.loadnpmtasks('grunt-contrib-concat');

grunt.registertask('default', ['concat']);

};

將src/js中所有js檔案合併為乙個js,放在dest/js目錄下,名字為package.json中專案name。這時候專案目錄中就會出現乙個dest的資料夾,如下所示:

};這裡我將concat後的js檔案仍然輸出到當前目錄dest/js下,如下圖所示:

使用上面兩個外掛程式合併壓縮後,每次都需要手動去html頁面中修改引用路徑,這並不是我們想要的結果,並且直接在源版本上修改也不利於測試與發布,因此首先我們需要用到grunt-contrib-copy外掛程式,將源**copy乙份,然後在副本上進行壓縮合併,這樣無論是全部壓縮還是部分壓縮就比較靈活了,copy之後就可以使用grunt-usemin外掛程式了,usemin是乙個多工外掛程式,它包括兩個任務,useminprepare和usemin。

useminprepare用來檢測html頁面中的指令碼塊,包括指令碼檔案的源路徑,目的路徑,從而更新後續需要使用到的grunt任務的配置資訊,如前面使用的concat,uglify。useminprepare只是分析檔案,獲取檔案及路徑資訊,不更新內容。html中的指令碼塊如下:

而usemin則進行檔案引用替換,將原始檔中的檔案塊替換為壓縮檔案。useminprepare已經幫助我們自動配置了concat,uglify針對的原始檔以及目的檔案的路徑資訊,因此就無需再手動配置concat和uglify任務了。配置**如下

module.exports = function(grunt) ,

useminprepare:

},uglify: }},

usemin:

},copy: ]}}

});grunt.loadnpmtasks('grunt-contrib-clean');

grunt.loadnpmtasks('grunt-contrib-copy');

grunt.loadnpmtasks('grunt-contrib-uglify');

grunt.loadnpmtasks('grunt-contrib-concat');

grunt.loadnpmtasks('grunt-usemin');

grunt.registertask('default', ['clean', 'copy', 'useminprepare', 'concat', 'uglify', 'usemin']);

};

上面又引入了乙個clean外掛程式,每次構建時候先清除build目錄,這樣build目錄就是我們打包後的要的結果了。目錄結構如下:

以上就是grunt最基本的使用方法,為了簡單方便,外掛程式的很多配置並沒有介紹與使用,可以在此基礎上檢視官方文件使用更強的功能即可。專案**使用的是大漠窮秋的angular實戰的乙個demo,也是我入門angular的資料,需要注意的是打包angular專案時候要保證嚴格的依賴注入風格,否則合併後會報錯的。

中文官網

usemin使用

hexo使用grunt實現自動化 hexo

本文介紹hexo使用grunt實現一些自動化操作。開發過前端或者node.js的同學對grunt應該不陌生,如果對grunt不熟悉可略過本文。開始使用hexo來處理靜態部落格時我就遇到了問題,我的文章已經寫了很多篇了,都是markdown格式,而且託管在github上了,然而hexo並不支援匯入文章...

前端自動化開發之grunt

上篇文章介紹了前端模組化開發工具seajs,利用seajs我們可以輕鬆實現前端的模組化程式設計,參見 一 準備工作 再使用grunt之前,我們先要安裝node.js,利用node的包管理工具npm來安裝grunt 關於如何安裝及配置node不屬於本文涉及範疇,所以在這裡不做介紹,需要檢視的童鞋可以參...

使用gulp實現前端自動化

const gulp require gulp const clean require gulp clean const fileinclude require gulp file include const rev require gulp rev const revreplace require...