Gulp 入門與應(yīng)用

Why Gulp?

gulp是前端開發(fā)過程中對代碼進行構(gòu)建的工具猛频,是自動化項目的構(gòu)建利器;它不僅能對網(wǎng)站資源進行優(yōu)化蛛勉,而且在開發(fā)過程中很多重復(fù)的任務(wù)能夠使用正確的工具自動完成鹿寻;使用它,我們不僅可以很愉快的編寫代碼诽凌,而且大大提高我們的工作效率

舉一個栗子: 前端開發(fā)中毡熏,一個網(wǎng)站有二十幾個的頁面,因此也有很多的css和js, 如果不用gulp侣诵,你會怎么做痢法,如果從代碼方便維護的角度出發(fā)你應(yīng)該把文件放在多個文件里狱窘,比如"header.css","global.css","index.css","mobile.css", 但是從網(wǎng)站性能的角度出發(fā),你可能應(yīng)該把所有css放在一個文件里疯暑,所有js也最好放在一個文件里(因為請求數(shù)量的減少往往意味網(wǎng)站性能的提高)训柴, 但這樣代碼的可維護性也就差了, 矛盾就這樣產(chǎn)生了妇拯。 而在這里gulp正好就可以來解決這種問題: 你依然可以將代碼放在多個文件里幻馁,然后通過gulp進行合并、壓縮等處理越锈,最終網(wǎng)頁上還是只引用一個文件仗嗦。 性能和代碼的可維護性都兼顧了, 你的css和js代碼可以分得更細致也沒關(guān)系甘凭。

當(dāng)然稀拐,這只是gulp最常見的功能之一,他還能做很多其他的事情,比如對es6 javascript代碼進行轉(zhuǎn)碼泉蝌,使得常見的瀏覽器能夠識別扎阶,它還可以用來做angularjs, vue, reactjs等前端框架的腳手架。

可以說gulp在前端構(gòu)建方面扮演著非常重要的角色蜓洪,所以說它是前端構(gòu)建工具的代表,其他常見的還有webpack, grunt等坯苹。


How to Start

開始的開始隆檀,安裝nodejs和npm環(huán)境.

一般情況下,nodejs的安裝包都自帶了npm, 所以在安裝完nodejs后即可直接使用npm了粹湃。

這里有兩個名詞恐仑,第一個nodejs不用說了, 火遍了整個互聯(lián)網(wǎng),從前端到后臺到處有它的身影为鳄,想必大家都知道裳仆。 npm可能有的人不清楚,npm是node package manager的縮寫济赎,這么說大家應(yīng)該就明白了鉴逞,說白了,npm就是nodejs的包管理器司训。

使用了nodejs的項目构捡,基本上都會有node_modules這么一個目錄, 這個目錄就是存放nodejs的包的地方。同時還會有一個文件package.json壳猜,這是npm用來管理node_modules模塊的配置文件, 它看起來像這樣

package.json.jpg

其中的 dependencies 指定了該項目所依賴的包

入門指南

參考:gulp中文網(wǎng)-入門指南


實戰(zhàn)

接下來勾徽,我們跟大家一起動手嘗試一下用gulp來進行前端css/js壓縮打包的例子

目錄結(jié)構(gòu)

使用了gulp的項目資源目錄通常會像這樣

gulp-structure.png

gulpfile.js 這個是用來定義gulp要執(zhí)行的任務(wù)的配置文件

步驟

  1. 建立目錄結(jié)構(gòu)
  2. 創(chuàng)建package.json
npm init
  1. 下載所有必須的依賴包
   npm install --save-dev gulp
   npm install --save-dev gulp-sass
   npm install --save-dev gulp-concat
   npm install --save-dev gulp-minify
   npm install --save-dev gulp-uglifycss
   npm install --save-dev browser-sync

也可以這樣運行(注意: 模塊之間應(yīng)該用空格分隔, 不能用tab分隔)

npm install --save-dev gulp gulp-sass gulp-concat gulp-minify gulp-uglifycss browser-sync
  1. 建立gulpfile.js
  2. 運行g(shù)ulp, 進行項目的開發(fā)

最后, 附上一個gulpfile.js的例子:

'use strict';

var gulp = require('gulp');
var sass = require('gulp-sass');
var concat = require('gulp-concat');
var minify = require('gulp-minify');
var uglifycss = require('gulp-uglifycss');
var browserSync = require('browser-sync');
var reload  = browserSync.reload;

gulp.task('styles',function(){
    gulp.src([
        'src/vender/rangeslider/rangeslider.css',
        'src/sass/app.scss'
    ])
    .pipe(sass().on('error', sass.logError))
    .pipe(concat('styles.min.css'))
    .pipe(uglifycss({"maxLineLen": 800,"uglyComments": true}))
    .pipe(gulp.dest('dest/css'));
});

gulp.task('scripts', function() {
    gulp.src([
        'src/vender/rangeslider/rangeslider.min.js',
        'src/js/main.js'
    ])
    .pipe(concat('scripts.js'))
    .pipe(minify({ext:{src:'.debug.js',min:'.min.js'}}))
    .pipe(gulp.dest('dest/js'));
});

gulp.task('watch', ['build'], browserSync.reload);

// BrowserSync
gulp.task('serve', ['build'], function() {
    browserSync({
        server: {
            baseDir: 'dest'
        },
        open: true,
        online: false,
        notify: true,
    });

    //要監(jiān)控的文件
    gulp.watch([
        'src/js/main.js'
    ],['watch']);
});

gulp.task('build', ['styles', 'scripts']);

gulp.task('default', ['build']);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市统扳,隨后出現(xiàn)的幾起案子喘帚,更是在濱河造成了極大的恐慌畅姊,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吹由,死亡現(xiàn)場離奇詭異若未,居然都是意外死亡,警方通過查閱死者的電腦和手機倾鲫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門粗合,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乌昔,你說我怎么就攤上這事隙疚。” “怎么了磕道?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵供屉,是天一觀的道長。 經(jīng)常有香客問我溺蕉,道長伶丐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任疯特,我火速辦了婚禮撵割,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辙芍。我一直安慰自己,他們只是感情好羹与,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布故硅。 她就那樣靜靜地躺著,像睡著了一般纵搁。 火紅的嫁衣襯著肌膚如雪吃衅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天腾誉,我揣著相機與錄音徘层,去河邊找鬼。 笑死利职,一個胖子當(dāng)著我的面吹牛趣效,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播猪贪,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼跷敬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了热押?” 一聲冷哼從身側(cè)響起西傀,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斤寇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拥褂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娘锁,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年饺鹃,在試婚紗的時候發(fā)現(xiàn)自己被綠了莫秆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡尤慰,死狀恐怖馏锡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伟端,我是刑警寧澤杯道,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站责蝠,受9級特大地震影響党巾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霜医,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一齿拂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肴敛,春花似錦署海、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镀梭,卻和暖如春刀森,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背报账。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工研底, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人透罢。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓榜晦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親羽圃。 傳聞我的和親對象是個殘疾皇子芽隆,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

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