Gulp自動(dòng)化構(gòu)建

前段時(shí)間使用了gulp+browser-sync才發(fā)現(xiàn)這個(gè)東西真的很好用。
準(zhǔn)備工作:(1)、安裝nodejs寥院。gulp是基于nodejs使用的卒煞,所以先安裝nodejs幕袱,https://nodejs.org/en/download/在這里直接下載安裝就好。
(2)、新建一個(gè)項(xiàng)目目錄,比如我在E盤中新建一個(gè)文件夾:gulpbrowsersync 蠕嫁。在其中新建一些文件夾或者文件比如style文件夾、js文件夾毯盈、images文件夾以及index.html,

開始工作:
1剃毒、進(jìn)入項(xiàng)目目錄E:\gulpbrowsersync 中,shift+鼠標(biāo)右鍵 選擇 在此處打開命令窗口 搂赋。創(chuàng)建一個(gè)模塊(在命令行中輸入)赘阀。
創(chuàng)建過(guò)程中會(huì)提示輸入一些東西,可以直接回車脑奠。
npm init //創(chuàng)建一個(gè)模塊纤壁,會(huì)在項(xiàng)目目錄中生成一個(gè)package.json文件

2、安裝gulp(在命令行中輸入)捺信。ps:gulp首先需要全局安裝一次。
npm install gulp -gnpm install gulp --save -dev

3欠痴、安裝所需要的幾個(gè)gulp插件(都是在命令行中輸入)

  1. {failImgCache = [];}if(failImgCache.indexOf(src) == -1 && src.trim().length){failImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-error').removeClass('md-img-loaded'); " onload="var src = window.removeLastModifyQuery(this.getAttribute('src'));if(!src.trim()) return;if(loadedImgCache.indexOf(src) == -1 && src.trim().length){loadedImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-loaded').removeClass('md-img-error');" style="box-sizing: border-box; border-width: 0px 4px 0px 2px; border-top-style: initial; border-right-style: solid; border-bottom-style: initial; border-left-style: solid; border-top-color: initial; border-right-color: transparent; border-bottom-color: initial; border-left-color: transparent; border-image: initial; vertical-align: middle; max-width: 100%; cursor: pointer;">
    npm install gulp-uglify --save -dev //js壓縮插件?npm install gulp-concat --save -dev //js合并插件?npm install gulp-cssnano --save -dev //css壓縮插件?npm install gulp-less --save -dev //less文件編譯 ?npm install gulp-imagemin --save -dev //圖片壓縮插件?npm install gulp-htmlmin --save -dev //html壓縮插件?npm install del --save -dev //文件刪除模塊
  2. {failImgCache = [];}if(failImgCache.indexOf(src) == -1 && src.trim().length){failImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-error').removeClass('md-img-loaded'); " onload="var src = window.removeLastModifyQuery(this.getAttribute('src'));if(!src.trim()) return;if(loadedImgCache.indexOf(src) == -1 && src.trim().length){loadedImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-loaded').removeClass('md-img-error');" style="box-sizing: border-box; border-width: 0px 4px 0px 2px; border-top-style: initial; border-right-style: solid; border-bottom-style: initial; border-left-style: solid; border-top-color: initial; border-right-color: transparent; border-bottom-color: initial; border-left-color: transparent; border-image: initial; vertical-align: middle; max-width: 100%; cursor: pointer;">

4迄靠、安裝browser-sync(在命令行中輸入)
npm install browser-sync --save -dev

5、在項(xiàng)目根目錄中新建gulpfile.js文件(重要@伞U浦俊!文件名為固定不變的菩咨。)輸入以下內(nèi)容:

  1. {failImgCache = [];}if(failImgCache.indexOf(src) == -1 && src.trim().length){failImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-error').removeClass('md-img-loaded'); " onload="var src = window.removeLastModifyQuery(this.getAttribute('src'));if(!src.trim()) return;if(loadedImgCache.indexOf(src) == -1 && src.trim().length){loadedImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-loaded').removeClass('md-img-error');" style="box-sizing: border-box; border-width: 0px 4px 0px 2px; border-top-style: initial; border-right-style: solid; border-bottom-style: initial; border-left-style: solid; border-top-color: initial; border-right-color: transparent; border-bottom-color: initial; border-left-color: transparent; border-image: initial; vertical-align: middle; max-width: 100%; cursor: pointer;">
    'use strict';??var gulp = require('gulp'); //獲取gulpvar browsersync = require('browser-sync').create();//獲取browsersync?//刪除dist目錄下文件var del=require('del');gulp.task('clean',function(cb){ return del(['dist/'],cb);})?//操作js文件var uglify = require('gulp-uglify'); //js壓縮插件var concat = require('gulp-concat'); //js合并插件gulp.task('scripts', function() { gulp.src('js/.js') //需要操作的源文件 .pipe(uglify()) //壓縮js文件 .pipe(concat('app.js')) //把js文件合并成app.js文件 .pipe(gulp.dest('dist/js')) //把操作好的文件放到dist/js目錄下 .pipe(browsersync.stream()); //文件有更新自動(dòng)執(zhí)行});?//操作css文件var cssnano = require('gulp-cssnano'); //css壓縮插件var less=require('gulp-less') //less文件編譯gulp.task('style', function() { gulp.src('style/.css') .pipe(less()) //編譯less文件 .pipe(cssnano()) //css壓縮 .pipe(gulp.dest('dist/style')) .pipe(browsersync.stream());});?var imagemin = require('gulp-imagemin'); //圖片壓縮插件gulp.task('image', function() { gulp.src('images/.{png,jpg,jpeg,gif}') .pipe(imagemin()) .pipe(gulp.dest('dist/images')) .pipe(browsersync.stream());});?var htmlmin = require('gulp-htmlmin'); //html壓縮插件gulp.task('html', function() { gulp.src('.html') .pipe(htmlmin({ collapseWhitespace: true, //壓縮html collapseBooleanAttributes: true, //省略布爾屬性的值 removeComments: true, //清除html注釋 removeEmptyAttributes: true, //刪除所有空格作為屬性值 removeScriptTypeAttributes: true, //刪除type=text/javascript removeStyleLinkTypeAttributes: true, //刪除type=text/css minifyJS:true, //壓縮頁(yè)面js minifyCSS:true //壓縮頁(yè)面css })) .pipe(gulp.dest('dist')) .pipe(browsersync.stream());});?gulp.task('serve', ['clean'], function() { gulp.start('scripts','style','image','html'); browsersync.init({ port: 2016, server: { baseDir: ['dist'] } }); gulp.watch('js/.js', ['scripts']); //監(jiān)控文件變化吠式,自動(dòng)更新 gulp.watch('style/.css', ['style']); gulp.watch('images/.', ['image']); gulp.watch('.html', ['html']);});?gulp.task('default',['serve']);
  2. {failImgCache = [];}if(failImgCache.indexOf(src) == -1 && src.trim().length){failImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-error').removeClass('md-img-loaded'); " onload="var src = window.removeLastModifyQuery(this.getAttribute('src'));if(!src.trim()) return;if(loadedImgCache.indexOf(src) == -1 && src.trim().length){loadedImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-loaded').removeClass('md-img-error');" style="box-sizing: border-box; border-width: 0px 4px 0px 2px; border-top-style: initial; border-right-style: solid; border-bottom-style: initial; border-left-style: solid; border-top-color: initial; border-right-color: transparent; border-bottom-color: initial; border-left-color: transparent; border-image: initial; vertical-align: middle; max-width: 100%; cursor: pointer;">
    注意1:gulp.src()中為操作文件的源文件陡厘,有需要可以自己更改;圖片更改中后面的為匹配的圖片格式特占,這里只寫了幾種常見圖片格式糙置,有需要可以自己增加。
    注意2:如果不是less文件而只是css文件是目,可以把style中的 .pipe(less()) 注釋掉谤饭。
    6、在之前的命令窗口中輸入
    gulp
    會(huì)出現(xiàn)以下提示
  3. {failImgCache = [];}if(failImgCache.indexOf(src) == -1 && src.trim().length){failImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-error').removeClass('md-img-loaded'); " onload="var src = window.removeLastModifyQuery(this.getAttribute('src'));if(!src.trim()) return;if(loadedImgCache.indexOf(src) == -1 && src.trim().length){loadedImgCache.push(src);}$(this).closest('.md-image').addClass('md-img-loaded').removeClass('md-img-error');" style="box-sizing: border-box; border-width: 0px 4px 0px 2px; border-top-style: initial; border-right-style: solid; border-bottom-style: initial; border-left-style: solid; border-top-color: initial; border-right-color: transparent; border-bottom-color: initial; border-left-color: transparent; border-image: initial; vertical-align: middle; max-width: 100%; cursor: default;">
    運(yùn)行完后應(yīng)該可以自動(dòng)打開一個(gè)瀏覽器懊纳。如果沒有打開也沒有關(guān)系揉抵,手動(dòng)打開瀏覽器輸入上面的local地址(即http://localhost:2016)就可以了。如果是同一個(gè)網(wǎng)段的電腦(比如連接同一個(gè)wifi的筆記本或者手機(jī))嗤疯,可以輸入上面的External地址(即http://192.168.100.110:2016)也可以實(shí)現(xiàn)自動(dòng)更新冤今。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茂缚,隨后出現(xiàn)的幾起案子戏罢,更是在濱河造成了極大的恐慌,老刑警劉巖阱佛,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帖汞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡凑术,警方通過(guò)查閱死者的電腦和手機(jī)翩蘸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)淮逊,“玉大人催首,你說(shuō)我怎么就攤上這事⌒古簦” “怎么了郎任?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)备籽。 經(jīng)常有香客問(wèn)我舶治,道長(zhǎng),這世上最難降的妖魔是什么车猬? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任霉猛,我火速辦了婚禮,結(jié)果婚禮上珠闰,老公的妹妹穿的比我還像新娘惜浅。我一直安慰自己,他們只是感情好伏嗜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布坛悉。 她就那樣靜靜地躺著伐厌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪裸影。 梳的紋絲不亂的頭發(fā)上挣轨,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音空民,去河邊找鬼刃唐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛界轩,可吹牛的內(nèi)容都是我干的画饥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼浊猾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼抖甘!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起葫慎,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤衔彻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后偷办,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艰额,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年椒涯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柄沮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡废岂,死狀恐怖祖搓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情湖苞,我是刑警寧澤拯欧,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站财骨,受9級(jí)特大地震影響镐作,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隆箩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一滑肉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摘仅,春花似錦、人聲如沸问畅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至矾端,卻和暖如春掏击,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背秩铆。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工砚亭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人殴玛。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓捅膘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親滚粟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子寻仗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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