gulp創(chuàng)建與使用

npm(node package manager)是nodejs的包管理器慎皱,用于node插件管理(包括安裝豁陆、卸載像啼、管理依賴等)

cnpm只是一個npm的國內(nèi)鏡像



1.下載nodejs安裝包,(去node官網(wǎng)https://nodejs.org)

2.安裝nodejs(如果命令提示權限錯誤驰徊,用sudo管理員權限輸入)

3.安裝成功? 控制臺輸入?node -v?查看版本


4.安裝cnpm


5.檢測是否安裝成功庶诡。


6.安裝gulp


7.查看gulp版本信息


8.創(chuàng)建自己的根目錄文件夾(project? dist? src)惦银,把項目放進去(放到src文件夾里)



9.進入自己的文件夾

.當前目錄

..上級目錄

/根目錄

dir顯示目錄

cd :盤名??



10.本地安裝gulp


11.成功后在根目錄下會生成兩個文件


12.通過cnpm init或者npm init來創(chuàng)建package.json文件,把"main": "index.js"入口js改為"main": "gulpfile.js"(創(chuàng)建gulpfile.js文件)灌砖,最終看到的package.json里有許多許多剛剛修改的代碼



編譯?less?或者?sass?文件

1.安裝gulp-less (gulp-sass)插件

less:? ?cnpm install --save-dev gulp-less

sass:? cnpm install --save-dev gulp-sass

安裝成功后會在文件package.json里多了一行gulp-less信息的代碼


2.安裝好gulp-less(gulp-sass)后在gulpfile.js中寫入如下代碼

//加載gulp模塊

var gulp = require("gulp");

//加載gulp-less模塊

var test_less = require("gulp-less");


//gulp任務api

//語法:

//gulp.task("任務名稱"璧函,回調(diào)函數(shù))

//回調(diào)函數(shù)里是要執(zhí)行的任務

gulp.task("test-less",function(){

gulp.src("src/less/*.less") //src表示要執(zhí)行任務的所在位置(src下必須有l(wèi)ess文件)

.pipe(test_less())//要執(zhí)行的任務

.pipe(gulp.dest("dist/css"));//執(zhí)行后的任務運行后所要放的位置

});

//sass?道理一樣


語法:

gulp.task("任務名稱",回調(diào)函數(shù))

回調(diào)函數(shù)里是要執(zhí)行的任務

src表示要執(zhí)行任務的所在位置(src下必須有要處理的文件)

gulp.src("要執(zhí)行(壓縮或編譯)的源代碼")

.pipe(模塊名稱)

.pipe(gulp.dest("代碼執(zhí)行后所要放的位置"));//執(zhí)行后的任務運行后所要放的位置




3.在控制臺輸入gulp任務名稱


運行后在dist文件夾下生成了一個css文件夾 里面有對應的less編譯后的css

1.應用sass插件上操作 ?先安裝插件-->在gulpfile.js里寫內(nèi)容--->運行

2.每次等寫完less或sass后基显,再執(zhí)行一次cmd有時候覺得還是有點麻煩蘸吓,我們可以使用自動編譯任務

watch(參數(shù)1,參數(shù)2)方法會自動執(zhí)行傳遞的任務

第一個參數(shù)是任務需要監(jiān)控的路徑

第二個參數(shù)是一個數(shù)組撩幽,里面是要編譯的任務名


gulp.task("watch",function(){

gulp.watch("src/less/*.less",["test-less"]);

});


壓縮html


1.安裝gulp-htmlmin

cnpm install --save-dev gulp-htmlmin

2.gulpfile.js?里代碼

gulp.task("htmlmin",function(){

var options = {

removeComments:true,//清除html注釋

collapseWhitespace:true,//壓縮html合并空格

collapseBooleanAttributes:true,//省略布爾屬性的值库继,===> checked="true"

removeEmptyAttributes:true,//刪除所有空格作屬性==> id=""

removeScriptTypeAttributes:true,//刪除<script>的type="text/javascript"的type="text/javascript"

removeStyleLinkTypeAttributes:true,//刪除<style>和<link>的type="text/css"和的type="text/css"

minifyJS:true,//壓縮頁面內(nèi)內(nèi)嵌式js

minifyCSS:true//壓縮頁面內(nèi)嵌式css

};

gulp.src("src/*.html")

.pipe(htmlmin(options))

.pipe(gulp.dest("dist"));

})

3.控制臺輸入


經(jīng)過壓縮,所有的html文件都在一行顯示窜醉,并且去掉了注釋和空格等




Gulp還可以根據(jù)瀏覽器版本自動處理前綴(自動補齊前綴)

cnpm install --save-dev? gulp-autoprefixer

var autoprefixer = require("gulp-autoprefixer");

gulp.task("autopre",function(){

gulp.src("src/css/*.css")

.pipe(autoprefixer({

browsers:['last 2 versions','Android >= 4.0'],

cascade :true,//是否美化屬性 默認值true

//像這樣-webkit-transform:rotate(45deg);

//transform:rotate(45deg)

remove:true//是否去掉不必要的前綴 默認為true

}))

.pipe(gulp.dest("dest/css/"))

})






壓縮css? gulp-minify-css或者gulp-clean-css

cnpm install --save-dev gulp-minify-css

cnpm install --save-dev gulp-clean-css

var mincss = require("gulp-minify-css");

gulp.task("test-minify",function(){

gulp.src("src/css/*.css")

.pipe(mincss({

advanced:false,//是否開啟高級優(yōu)化(合并選擇器等)宪萄,類型:Boolean默認為true

compatibility:'ie7',//保留ie7及以下兼容寫法 類型string

//默認:'' or '*'[啟用兼容模式:'ie7':ie7兼容模式,'ie8':ie8兼容模式'*':ie9+兼容模式]

keepBreaks:true,//類型:boolean默認false [是否保留換行]

keepSpecialComments:"*"

//保留所有特殊前綴 當你用autoprefixer生成的瀏覽器前綴榨惰,如果不加此參數(shù)拜英,有可能會刪除你的部分前綴

}))

.pipe(gulp.dest("dest/css"));

});



給剛剛壓縮的css里的圖片路徑加上版本號? 防止緩存


cnpm install gulp-make-css-url-version --save-dev

//給圖片加版本號? 防止緩存

gulp.task("test-url",function () {

gulp.src("src/css/*.css")

.pipe(urlpic())

.pipe(mincss())

.pipe(gulp.dest("dest/css"))

})


壓縮js

cnpm install gulp-uglify --save-dev

var jsmin = require("gulp-uglify");

//壓縮

gulp.task("js-min",function () {

// gulp.src("src/js/*.js")

gulp.src(["src/js/")

.pipe(jsmin())

.pipe(gulp.dest("dest/js"));

})


壓縮所有js在一個文件里

cnpm install gulp-concat --save-dev

var c = require("gulp-concat");

//壓縮所有的js在一個文件里

gulp.task("test_concat",function () {

gulp.src("src/js/*.js")

.pipe(c("all.js"))

.pipe(gulp.dest("dest/js"))

})


壓縮圖片

cnpm install gulp-imagemin --save-dev

var imgmin = require("gulp-imagemin");

//壓縮圖片

gulp.task("testImg",function(){

gulp.src("src/img/*.{png,jpg,gif,ico}")

.pipe(imgmin({

optimizationLevel : 5,//類型:number默認:3取值范圍:0-7(優(yōu)化等級)

progressive : true,//類型:boolean默認false無損壓縮jpg圖片

interlaced : true,//類型:boolean默認:false隔行掃描gif進行渲染

multipass : true //類型:boolean默認:false多次優(yōu)化svg直到完全優(yōu)化

}))

.pipe(gulp.dest("dist/img"));

});


深度壓縮圖片

cnpm install imagemin-pngquant --save-dev

var imgminq = require("imagemin-pngquant");

//深度壓縮圖片

gulp.task("testImgmin",function(){

gulp.src("src/img/*.{png,jpg,gif,ico}")

.pipe(imgmin({

progressive : true,//類型:boolean默認false無損壓縮jpg圖片

svgoPlugins : [{removeViewBox:false}],//不要移除svg的viewbox屬性

use : [imgminq()]//使用pngquant深度壓縮png圖片的imagemin插件

}))

.pipe(gulp.dest("dist/img"));

});

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市琅催,隨后出現(xiàn)的幾起案子居凶,更是在濱河造成了極大的恐慌,老刑警劉巖藤抡,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侠碧,死亡現(xiàn)場離奇詭異,居然都是意外死亡缠黍,警方通過查閱死者的電腦和手機弄兜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人替饿,你說我怎么就攤上這事语泽。” “怎么了盛垦?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵湿弦,是天一觀的道長。 經(jīng)常有香客問我腾夯,道長颊埃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任蝶俱,我火速辦了婚禮班利,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘榨呆。我一直安慰自己罗标,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布积蜻。 她就那樣靜靜地躺著闯割,像睡著了一般。 火紅的嫁衣襯著肌膚如雪竿拆。 梳的紋絲不亂的頭發(fā)上宙拉,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音丙笋,去河邊找鬼谢澈。 笑死,一個胖子當著我的面吹牛御板,可吹牛的內(nèi)容都是我干的锥忿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怠肋,長吁一口氣:“原來是場噩夢啊……” “哼敬鬓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笙各,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤钉答,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后酪惭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體希痴,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡者甲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年春感,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鲫懒,死狀恐怖嫩实,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窥岩,我是刑警寧澤甲献,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站颂翼,受9級特大地震影響晃洒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朦乏,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一球及、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呻疹,春花似錦吃引、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至并思,卻和暖如春庐氮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纺荧。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工旭愧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宙暇。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓输枯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親占贫。 傳聞我的和親對象是個殘疾皇子桃熄,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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