Gulp
是一款基於流的前端自動化構建工具,相似於任務管理器,能夠自動化的幫助咱們完成開發過程當中大量的重複工做,如預處理語言的編譯,js
、css
、html
壓縮混淆,圖片尺寸優化等。其中文網的網址爲 https://www.gulpjs.com.cn/,官網地址爲 https://gulpjs.com/。下面來介紹Gulp
在項目中的使用步驟。css
在安裝和使用gulp
以前,必須先確保node
環境已經配置成功,具體步驟可參考文章 Node環境的配置與安裝。完成node
環境的安裝以後,咱們能夠在任意目錄下,打開cmd
,鍵入命令-> npm install gulp -g
來進行gulp
的全局安裝。能夠經過命令-> gulp -v
來驗證gulp
是否安裝成功。以下圖所示:html
咱們在當前的項目文件目錄下,打開cmd
,鍵入命令-> npm init
,能夠所有回車便可在項目文件夾的根目錄下生成一個package.json
的配置文件。前端
在當前的項目文件目錄下,打開cmd
,鍵入命令-> npm install gulp --save-dev
。(由於gulp
包當中即包含工具,也包含一些編程的API
,因此咱們須要將gulp
做爲項目的開發依賴安裝到項目本地。)node
咱們在項目文件夾的根目錄下建立一個gulp
的任務主文件,其文件名固定爲gulpfile.js
。gulp
用於幫助咱們機械化的完成一些重複的工做,其機制就是將重複的工做抽象成一個個的任務,故咱們須要在主文件gulpfile.js
當中進行任務的註冊。其基本代碼結構爲:npm
var gulp = require('gulp'); // 載入gulp模塊 gulp.task('default',function(){ //註冊一個任務 //當gulp執行default這個任務時,會自動執行該函數。 });
當咱們須要將開發階段的源碼目錄src
中的文件自動拷貝至發佈上線階段的文件目錄dist
當中,而且監聽源文件的變化,並及時自動更新拷貝文件。gulpfile.js
當中的示例代碼以下所示:編程
var gulp = require('gulp'); gulp.task('copy',function(){ //註冊一個拷貝的任務 gulp.src('./src/index.html') .pipe(gulp.dest('./dist/')); }); //當執行copy這個任務時,便可將src目錄下的index.html文件拷貝至dist文件夾當中,文件名不變。 gulp.task('listen',function(){ //註冊一個監聽的任務 gulp.watch('./src/index.html',['copy']); //監聽src目錄下的index.html文件,一旦文件發生變化並保存時,便可執行任務數組當中的copy任務。 });
在完成任務的註冊以後,便可在項目文件夾下,打開cmd
,鍵入命令-> gulp listen
便可。json
gulp
能夠配合許多插件(plugins
)來幫助咱們完成這些重複性任務,當前支持的插件列表能夠見官網 https://gulpjs.com/plugins/ 。例如咱們可使用插件gulp-less
來完成less
文件的編譯成css
文件,使用插件gulp-cssmin
來完成css
文件的自動壓縮,使用插件gulp-concat-css
來完成多個css
文件的合併,使用插件gulp-rename
來完成css
文件的重命名。
首先在安裝這些插件,在項目文件夾下,打開cmd
,鍵入命令-> npm install gulp-less gulp-cssmin gulp-concat-css gulp-rename --save-dev
。再在gulpfile.js
當中進行插件模塊包的引入與任務的註冊,示例代碼以下所示:gulp
var gulp = require('gulp'); var less = require('gulp-less'); var cssmin = require('gulp-cssmin'); var concat = require('gulp-concat-css'); var rename = require('gulp-rename'); gulp.task('style',function(){ gulp.src('./src/style/*.less') //獲取到style目錄下全部的less文件 .pipe(less()) // 完成less文件編譯,成爲css文件 .pipe(concat('all.css')) // 將多個css文件合併爲一個all.css文件 .pipe(cssmin()) // 完成css文件的壓縮 .pipe(rename({suffix:'.min'})) //重命名文件名爲all.min.css .pipe(gulp.dest('./dist/style/')); //將all.css文件複製到dist文件夾的style目錄下,文件名不變 });
在完成任務的註冊以後,便可在項目文件夾下,打開cmd
,鍵入命令-> gulp style
便可。segmentfault