前端自動(dòng)化工具——gulp詳細(xì)入門教程

本文github地址
簡介:
gulp是前端開發(fā)過程中對代碼進(jìn)行構(gòu)建的工具,是自動(dòng)化項(xiàng)目的構(gòu)建利器花竞;gulp是基于Nodejs的自動(dòng)任務(wù)運(yùn)行器, 她能自動(dòng)化地完成 javascript/sass/less/html/image/css 等文件的的測試掸哑、檢查约急、合并零远、壓縮、格式化厌蔽、瀏覽器自動(dòng)刷新牵辣、部署文件生成,并監(jiān)聽文件在改動(dòng)后重復(fù)指定的這些步驟奴饮。在實(shí)現(xiàn)上纬向,它借鑒了Unix操作系統(tǒng)的管道(pipe)思想,前一級(jí)的輸出戴卜,直接變成后一級(jí)的輸入逾条,使得在操作上非常簡單。
gulp 和 grunt 非常類似叉瘩,但相比于 grunt 的頻繁 IO 操作膳帕,gulp 的流操作粘捎,能更快地更便捷地完成構(gòu)建工作薇缅。

一、簡要

步驟:全局安裝gulp -> 項(xiàng)目安裝gulp以及gulp插件 -> 配置gulpfile.js -> 運(yùn)行任務(wù)

二攒磨、具體操作

1. 全局安裝gulp
npm install gulp -g
2. 新建package.json文件

說明:package.json是基于nodejs項(xiàng)目必不可少的配置文件泳桦,它是存放在項(xiàng)目根目錄的普通json文件。方便自己也方便他人娩缰,這個(gè)工作中慢慢體會(huì)灸撰。
有兩種方法:其一利用webstrom編輯器新建一個(gè)package.json文件;其二在當(dāng)前目錄下輸入npm init 初始化拼坎,然后一路開車浮毯。
如下圖:


3. 本地安裝gulp插件
npm install --save-dev  xxx //注意此處的xxx是你要用到的插件名稱。

ps:熟練的話可以連著寫泰鸡。
注意:安裝完成之后會(huì)有兩個(gè)變化债蓝,一個(gè)是在當(dāng)前目錄下多了一個(gè)node_modules文件夾,文件package.json下多兩行字

4. 新建gulpfile.js文件(重要)

說明:gulpfile.js是gulp項(xiàng)目的配置文件盛龄,用于編寫任務(wù)的饰迹,也就是讓gulp做什么怎么做!

大概分三步:

  1. 引入所需模塊(必須已經(jīng)用npm安裝過)
  2. 編寫任務(wù)
  3. 執(zhí)行任務(wù)

例1:看一個(gè)將項(xiàng)目文件(css余舶、html啊鸭、js、圖片)壓縮過程匿值。

注意:這里的js文件因?yàn)槭褂昧薳s6的語法赠制,所以必須將其轉(zhuǎn)為es5語法在進(jìn)行壓縮
//引入模塊
var gulp=require('gulp');
var uglify=require('gulp-uglify');
var htmlmin=require('gulp-htmlmin');
var cssmin=require('gulp-cssmin');
var imagemin=require('gulp-imagemin');
var concat=require('gulp-concat');
var babel = require('gulp-babel');//識(shí)別es6語法轉(zhuǎn)為es5
var es2015Preset = require('babel-preset-es2015');

//編寫任務(wù)
/* --------------------   壓縮css文件   -------------------- */
gulp.task('compress:css',function(){
    gulp.src('src/demo/css/*.css')//配置要壓縮的文件源路徑
        .pipe(cssmin()) //該任務(wù)調(diào)用的模塊
        .pipe(gulp.dest('build/demo_compress/css'))  //生成文件保存的路徑
});
/* --------------------   壓縮js文件(首先將es6語法轉(zhuǎn)化為es5語法)   -------------------- */
gulp.task('es6to5', function() {
    return gulp.src('src/demo/js/*.js') //配置要壓縮的文件源路徑
        .pipe(babel({presets: [es2015Preset]}))
        .pipe(gulp.dest('./res/js/'));
});
gulp.task('compress:js', ['es6to5'], function() {
    return gulp.src('./res/js/app.js')
        .pipe(uglify({
            mangle: false,//類型:Boolean 默認(rèn):true 是否修改變量名
            compress: true,//類型:Boolean 默認(rèn):true 是否完全壓縮
        }))
        .pipe(gulp.dest('build/demo_compress/js'));
});
/* --------------------   壓縮img文件(可能會(huì)失真)   -------------------- */
gulp.task('compress:img',function(){
    gulp.src('src/demo/image/*.gif')
        .pipe(imagemin())
        .pipe(gulp.dest('build/demo_compress/image'))
});
/* --------------------   壓縮html文件   -------------------- */
gulp.task('compress:html',function(){
    gulp.src('src/demo/*.html')
        .pipe(htmlmin({
            removeComments: true,       //刪除注釋
            collapseWhitespace: true   //刪除空格
        }))
        .pipe(gulp.dest('build/demo_compress/'))
});
//監(jiān)聽模塊 ---(就是監(jiān)聽某一個(gè)文件發(fā)生改變的時(shí)候知道自動(dòng)執(zhí)行相應(yīng)的壓縮任務(wù))
//gulp.watch('src/demo/*.html',['compress:html']);
//注冊默認(rèn)任務(wù) --- (在當(dāng)前目錄下執(zhí)行“gulp”指令即可)
gulp.task('default',['compress:css','compress:js','compress:img','compress:html']);
5. 運(yùn)行g(shù)ulp
//輸入命令 gulp
gulp
6. 補(bǔ)充

一般工作過過程中我們拿到的文件,一般就是分兩步:

  1. npm install
  2. gulp
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挟憔,一起剝皮案震驚了整個(gè)濱河市憎妙,隨后出現(xiàn)的幾起案子库正,更是在濱河造成了極大的恐慌,老刑警劉巖厘唾,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件褥符,死亡現(xiàn)場離奇詭異,居然都是意外死亡抚垃,警方通過查閱死者的電腦和手機(jī)喷楣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹤树,“玉大人铣焊,你說我怎么就攤上這事『辈” “怎么了曲伊?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長追他。 經(jīng)常有香客問我,道長邑狸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任赚哗,我火速辦了婚禮,結(jié)果婚禮上硅堆,老公的妹妹穿的比我還像新娘屿储。我一直安慰自己,他們只是感情好渐逃,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著祖屏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪买羞。 梳的紋絲不亂的頭發(fā)上袁勺,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機(jī)與錄音畜普,去河邊找鬼期丰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钝荡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赎离,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼端辱,長吁一口氣:“原來是場噩夢啊……” “哼梁剔!你這毒婦竟也來了舞蔽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤渗柿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后朵栖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡编兄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年声登,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揣苏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悯嗓。...
    茶點(diǎn)故事閱讀 38,577評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脯厨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出合武,到底是詐尸還是另有隱情,我是刑警寧澤稼跳,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站吃沪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜红淡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摇零。 院中可真熱鬧桶蝎,春花似錦遂黍、人聲如沸俊嗽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竹揍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芬位,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工英染, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留被饿,地道東北人四康。 一個(gè)月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓狭握,卻偏偏與公主長得像,于是被迫代替她去往敵國和親论颅。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評論 2 348

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