gulp入門(mén)(3) - 方法篇

原文來(lái)自:http://www.itdecent.cn/p/9482673e09b9
gulp 借鑒了 Unix 操作系統(tǒng)的管道(pipe)思想,前一級(jí)的輸出,直接變成后一級(jí)的輸入

一、輸入流
獲取當(dāng)前文件流存儲(chǔ)于管道

gulp.src(globs[, options])
globs:需要處理的源文件匹配符路徑。

使用具體路徑
獲取 js 目錄下 app.js 文件

gulp.src("js/app.js")
使用通配符
通配符路徑匹配規(guī)則:

描述

  • 匹配所有文件
    例:js/.js,匹配 js 目錄下所有 js 文件
    ** 匹配0個(gè)或者多個(gè)子文件夾
    例:view/
    /.html,匹配 view 目錄下及其子目錄下所有的 html 文件
    {} 匹配多個(gè)屬性
    例1:js/{a,b}.js,匹配 js 目錄下 a.js 及 b.js 兩文件
    例2:images/*.{jpg,png,gif},匹配 images 目錄下所有jpg/png/gif文件
    ! 排除文件
    例:!less/test.less,排除 less 目錄下的 test.less 文件

組合使用
獲取 less 目錄下的所有 .less 文件,但是排除 test.less 文件

gulp.src(['less/*/.less', '!less/test.less']);
options:有三個(gè)屬性可以設(shè)置 buffer、read、base

名稱(chēng) 類(lèi)型 默認(rèn)值 描述
options.buffer Boolean true 如果設(shè)置為false,那么將會(huì)以stream方式返回,而不是文件的buffer形式。這在處理一些大文件時(shí)將會(huì)很有用。
options.read Boolean true 如果設(shè)置為false,那么會(huì)返回空值,也就是不會(huì)去讀取文件。
options.base String 設(shè)置輸出路徑的基礎(chǔ)目錄,具體用法參考后面的示例
二、輸出流
輸出文件流至指定路徑(流可以從管道中獲?。绻募A不存在,將會(huì)自動(dòng)創(chuàng)建。

gulp.dest(path[, options])
path:文件輸出目錄,也可以傳遞一個(gè)函數(shù),在函數(shù)中返回一個(gè)路徑。

options:有兩個(gè)屬性可以設(shè)置 cwd、mode

名稱(chēng) 類(lèi)型 默認(rèn)值 說(shuō)明
options.cwd String process.cwd() 輸出目錄的cwd參數(shù),只在所給的輸出目錄是相對(duì)路徑時(shí)有效
options.mode String 0777 定義所有在輸出目錄中所創(chuàng)建的目錄的權(quán)限

例:將 src/js 目錄下所有的 js 文件全部復(fù)制至 build/js 目錄

gulp.src("./src/js/*.js")
.pipe(gulp.dest("./build/js"))
假設(shè),src/asset/js/ 目錄下存放項(xiàng)目的 js 文件,現(xiàn)在進(jìn)行項(xiàng)目打包,需要將所有的 js 文件移動(dòng)至 build/asset/js 目錄下,那么應(yīng)該怎么實(shí)現(xiàn)

以 src/asset/js/common/app.js 文件為例

第一步:獲取指定目錄下所有文件

gulp.src("src/asset/js/*/.js")
第二步:輸出至指定目錄

輸出目錄該寫(xiě)什么?build?build/asset?build/asset/js?

gulp.dest("build") // 寫(xiě)入 'build/common/app.js'
gulp.dest("build/asset") // 寫(xiě)入 'build/asset/common/app.js'
gulp.dest("build/asset/js") // 寫(xiě)入 'build/asset/js/common/app.js'
可以看出,最終的輸出路徑,是 dest 方法定義的輸出路徑 + src 方法匹配路徑。其實(shí)這都是 src 方法中的 option.base 屬性的作用。

gulp.src('src/asset/js/*/.js') // 獲取文件流,并且設(shè)置 base 為 src/ex2,匹配路徑為 common/app.js
.pipe(gulp.dest("build")); // 寫(xiě)入 'build/js/app.js'

gulp.src('src/asset/js/*/.js', {base: 'src'}) // 獲取文件流,并且設(shè)置 base 為 src,匹配路徑為 asset/js/common/app.js
.pipe(gulp.dest("build")); // 寫(xiě)入 'build/ex2/js/app.js'
三、監(jiān)聽(tīng)器
監(jiān)視文件,并且可以在文件發(fā)生改動(dòng)時(shí)做一些事情

gulp.watch(glob[, opts], tasks);
或者

gulp.watch(glob[, opts, cb]);
例1:監(jiān)視 src/js 目錄下所有的 js 文件,如果發(fā)生改動(dòng),則調(diào)用 js 任務(wù),自動(dòng)將文件復(fù)制至 build 目錄下

gulp.watch('src/js/*/.js', ['js']);
最后提供一下綜合示例
源碼目錄:src,其中,src/asset/js 目錄存放 js 文件,
輸出目錄:build
將源碼目錄中的所有 js 文件打包至輸出目錄,并且當(dāng)有 js 文件發(fā)生變更時(shí),執(zhí)行自動(dòng)打包動(dòng)作

var gulp = require('gulp');

gulp.task('js', function() {
gulp.src('src/asset/js/*/.js', {base: "src"})
.pipe(gulp.dest("build"));
})

gulp.task('default', ['js'], function() {
gulp.watch('src/asset/js/*/.js', ['js']);
})

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    依依玖玥閱讀 3,304評(píng)論 7 55
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    井皮皮閱讀 1,401評(píng)論 0 10
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    小裁縫sun閱讀 1,029評(píng)論 0 3
  • gulpjs是一個(gè)前端構(gòu)建工具,與gruntjs相比,gulpjs無(wú)需寫(xiě)一大堆繁雜的配置參數(shù),API也非常簡(jiǎn)單,學(xué)...
    build1024閱讀 584評(píng)論 0 0
  • 給你一首歌的時(shí)間 @鯨落_海洋:看過(guò)三遍原著,最讓我愛(ài)的還是陸之昂,最讓我心疼的還是遇見(jiàn)??戳藙?,還是喜歡陸之昂,...
    菜鳥(niǎo)A隊(duì)閱讀 4,611評(píng)論 0 0

友情鏈接更多精彩內(nèi)容