gulp淺顯易懂的入門

gulp是什么虱饿?

gulp是工具鏈袱院、構(gòu)建工具蔑匣,可以配合各種插件做js壓縮掸掸,css壓縮,less編譯 替代手工實現(xiàn)自動化工作纪蜒。

1.構(gòu)建工具
2.自動化
3.提高效率用

基于流(streaming)的方式構(gòu)建衷恭,首先讀取文件,編譯壓縮文件(流的方式)纯续,最終將結(jié)果生成到配置的文件目錄下随珠。

初步使用 (先簡單壓縮CSS,JS體驗一下)

環(huán)境配置

1.首先,安裝nodejs.去官網(wǎng),download.根據(jù)自己的系統(tǒng)版本下載安裝.
安裝好node以后,自帶安裝好npm猬错。推薦使用cnpm牙丽,速度快一點。

2.我們接下來的步驟需要使用命令行,推薦使用git bash兔魂。
在你要運行g(shù)ulp的文件夾目錄里,右鍵举娩,使用git bash析校,開始敲命令。


git bash here.png

先敲個node -vnpm -v 檢測一下安裝好了沒有铜涉。
如果出現(xiàn)版本號就是對的智玻。

看一下版本號.png

因為使用的git bash,所以在哪里右鍵的就會在哪個菜單定位。如果是使用windows自帶命令行的話芙代,需要使用cd命令進入菜單吊奢,查看文件目錄需要使用dir。

3.接下來全局安裝gulp
cnpm install -g gulp
需要管理員權(quán)限纹烹,我是win10系統(tǒng)页滚,右鍵開始菜單以管理員身份運行命令行,執(zhí)行該命令铺呵。后面如果安裝什么插件的時候提醒需要管理員權(quán)限裹驰,也是以同樣的方式。
接下來進入項目文件片挂,將gulp安裝到開發(fā)環(huán)境幻林。
執(zhí)行cnpm install --save-dev gulp
我們使用-save-dev來更新package.json文件,更新devDependencies值音念,以表明項目需要依賴gulp沪饺。

4.新建gulpfile文件
在項目的根目錄新建gulpfile.js文件。待會寫入內(nèi)容闷愤。
先介紹一下整葡,gulp只有五個方法:

task(用來定義任務(wù))
run(執(zhí)行某任務(wù),在后面定義default或者.watch監(jiān)聽任務(wù)變動時會用到)
watch(監(jiān)聽肝谭,當(dāng)有文件變化時掘宪,會運行回調(diào)定義的其他任務(wù))
src(用來定義要編譯的源文件路徑)
dest(定義編譯完的文件輸出路徑)

5.安裝插件蛾扇。
gulp-minify-css: 壓縮css
gulp-jshint: 檢查js
gulp-uglify: 壓縮js
gulp-concat: 合并文件
gulp-rename: 重命名文件
gulp-clean: 清空文件夾
gulp-notify:提示
安裝gulp-jshint可能會遇到一些問題,需要先安裝jshint魏滚。

cnpm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev

我的文件夾目錄新建了一個assets用來存放編譯過的文件镀首,
stylesheets存放樣式文件,javascripts存放js文件鼠次。

在gulpfile.js里寫入:

// 引入 gulp及組件
var gulp=require('gulp'),  //gulp基礎(chǔ)庫
    minifycss=require('gulp-minify-css'),   //css壓縮
    concat=require('gulp-concat'),   //合并文件
    uglify=require('gulp-uglify'),   //js壓縮
    rename=require('gulp-rename'),   //文件重命名
    jshint=require('gulp-jshint'),   //js檢查
    notify=require('gulp-notify');   //提示


 
//css處理
gulp.task('minifycss',function(){
   return gulp.src('stylesheets/*.css')      //設(shè)置css
       .pipe(concat('order_query.css'))      //合并css文件到"order_query"
       .pipe(gulp.dest('assets/styles'))           //設(shè)置輸出路徑
       .pipe(rename({suffix:'.min'}))         //修改文件名
       .pipe(minifycss())                    //壓縮文件
       .pipe(gulp.dest('assets/styles'))            //輸出文件目錄
       .pipe(notify({message:'css task ok'}));   //提示成功
});

//JS處理
gulp.task('minifyjs',function(){
   return gulp.src(['javascripts/*.js'])  //選擇合并的JS
       .pipe(concat('order_query.js'))  //合并js
       .pipe(gulp.dest('assets/js'))       //輸出文件目錄
       .pipe(rename({suffix:'.min'}))    //重命名
       .pipe(uglify())                    //壓縮
       .pipe(gulp.dest('assets/js'))            //輸出 
       .pipe(notify({message:"js task ok"}));    //提示
});

gulp.task('default',function(){
    gulp.start('minifycss','minifyjs');
});

運行更哄,命令行里輸入gulp
或者gulp 任務(wù)名可以單運行某一個任務(wù),例如 gulp minifyjs 腥寇。
到這里初步可以看到壓縮的成果啦成翩。

如果想要更改了文件后自動監(jiān)聽到變化并重新編譯,可以使用.watch()方法赦役。

定義default任務(wù)麻敌。這個任務(wù)是基于其他任務(wù)的。命令行只寫一個gulp時掂摔,會自動運行default里的命令术羔,可以用它將所有的任務(wù)關(guān)聯(lián)起來,加入監(jiān)聽.watch乙漓,這樣當(dāng)文件出現(xiàn)修改變動時级历,將會自動重新編譯。
注意一點坑的是:寫文件路徑叭披,我一開始多寫了一個斜杠寥殖,寫成了'/stylesheets/*.less',于是就沒有運行成功。改好后果然每次修改都會重新編譯涩蜘。

gulp.task('default', function(){
    gulp.start('minifycss','minifyjs','testLess');
    gulp.watch('stylesheets/*.less', function(){
        gulp.start('testLess');
    });
});



更新幾個新的發(fā)現(xiàn)

gulp-changed

只對修改過的文件進行編譯或者打包嚼贡,沒動過的直接輸出(我遇到了問題,changed似乎不生效同诫,每次修改后重新編譯仍然會運行所有的文件)

var gulp   = require('gulp');
var changed = require('gulp-changed');
var uglify = require('gulp-uglify');

gulp.task('changed',function(){
  return gulp.src('./js/*.js') // 監(jiān)視文件:js目錄下所有的js文件
    .pipe(changed('./dist'))  // 過濾未修改文件,需要指定文件輸出目錄
    .pipe(gulp.dest('./dist'));  // 輸出文件
});

gulp.task('compress',['changed'], function() {
  return gulp.src('./js/*.js') // 壓縮文件:js目錄下所有的js文件
    .pipe(plumer()) //異常處理
    .pipe(uglify())  // 使用uglify插件執(zhí)行壓縮操作
    .pipe(gulp.dest('./dist'));  // 輸出壓縮后的文件
});

gulp-plumber

使用gulp watch 對文件進行熱監(jiān)控時编曼,如果出現(xiàn)問題,會直接停止watch剩辟,還需要在控制臺再次運行掐场。
用gulp-pumber后出現(xiàn)異常會在控制臺顯示錯誤,但并不中斷watch贩猎,當(dāng)錯誤修改好后還可以繼續(xù)執(zhí)行watch熊户。

npm install --save-dev gulp-plumber
gulp.task('compress',['changed'], function() {
  return gulp.src('./js/*.js') // 壓縮文件:js目錄下所有的js文件
  .pipe(plumer()) //異常處理
    .pipe(uglify())  // 使用uglify插件執(zhí)行壓縮操作
    .pipe(gulp.dest('./dist'));  // 輸出壓縮后的文件
});

browersync

可以在pc、手機吭服、pad上多端同時查看頁面效果并且不用手動刷新嚷堡!
炒雞方便!

cnpm install -gd browser-sync

安裝好后進入項目的根路徑,輸入

brower-sync start --server --files "**"

會啟動一個小型的web應(yīng)用服務(wù)器蝌戒。--files "**"表示監(jiān)視根路徑下所有文件的修改情況串塑,當(dāng)文件被修改保存時,修改內(nèi)容會實時同步到web瀏覽器中北苟,控制臺會顯示url信息桩匪。

localhost:3000 默認地址
localhost:3001 訪問設(shè)置頁面

gulp也有插件.只是我這里裝了gulp的插件后需要手動刷新
安裝

npm install browser-sync gulp --save-dev
var browserSync = require('browser-sync').create();
gulp.task('browser-sync', function() {
    browserSync.init({
        server: {
            baseDir: "./"
        }
    });
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市友鼻,隨后出現(xiàn)的幾起案子傻昙,更是在濱河造成了極大的恐慌,老刑警劉巖彩扔,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妆档,死亡現(xiàn)場離奇詭異,居然都是意外死亡虫碉,警方通過查閱死者的電腦和手機贾惦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敦捧,“玉大人纤虽,你說我怎么就攤上這事〗实耄” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵洋措,是天一觀的道長济蝉。 經(jīng)常有香客問我,道長菠发,這世上最難降的妖魔是什么王滤? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮滓鸠,結(jié)果婚禮上雁乡,老公的妹妹穿的比我還像新娘。我一直安慰自己糜俗,他們只是感情好踱稍,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著悠抹,像睡著了一般珠月。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上楔敌,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天啤挎,我揣著相機與錄音,去河邊找鬼卵凑。 笑死庆聘,一個胖子當(dāng)著我的面吹牛胜臊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伙判,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼象对,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了澳腹?” 一聲冷哼從身側(cè)響起织盼,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酱塔,沒想到半個月后沥邻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡羊娃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年唐全,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕊玷。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡邮利,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垃帅,到底是詐尸還是另有隱情延届,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布贸诚,位于F島的核電站方庭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酱固。R本人自食惡果不足惜械念,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望运悲。 院中可真熱鬧龄减,春花似錦、人聲如沸班眯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽署隘。三九已至脖苏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間定踱,已是汗流浹背棍潘。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人亦歉。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓恤浪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肴楷。 傳聞我的和親對象是個殘疾皇子水由,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

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

  • 對網(wǎng)站資源進行優(yōu)化,并使用不同瀏覽器測試并不是網(wǎng)站設(shè)計過程中最有意思的部分赛蔫,但是這個過程中的很多重復(fù)的任務(wù)能夠使用...
    懵逼js閱讀 1,061評論 0 8
  • gulpjs是一個前端構(gòu)建工具砂客,與gruntjs相比,gulpjs無需寫一大堆繁雜的配置參數(shù)呵恢,API也非常簡單鞠值,學(xué)...
    小裁縫sun閱讀 922評論 0 3
  • 1、gulp的安裝 首先確保你已經(jīng)正確安裝了nodejs環(huán)境渗钉。然后以全局方式安裝gulp: npm install...
    F_imok閱讀 2,364評論 1 11
  • 編輯于2015年 轉(zhuǎn)載自某作者的譯文 作者要是看到請聯(lián)系我注明出處 對網(wǎng)站資源進行優(yōu)化彤恶,并使用不同瀏覽器測試并不是...
    krock01閱讀 447評論 0 2
  • gulpjs是一個前端構(gòu)建工具,與gruntjs相比鳄橘,gulpjs無需寫一大堆繁雜的配置參數(shù)声离,API也非常簡單,學(xué)...
    依依玖玥閱讀 3,149評論 7 55