Gulp API

本節咱們來看一下 Gulp 中的 API 方法,以下所示:正則表達式

方法 描述
src() 建立用於從文件系統讀取 Vinyl 對象的流
dest() 建立一個用於將 Vinyl 對象寫入到文件系統的流
symlink() 建立一個流(stream),用於鏈接 Vinyl 對象到文件系統
lastRun() 檢索在當前運行進程中成功完成任務的最後一次時間
series() 將任務函數和/或組合操做組合成更大的操做,這些操做將按順序依次執行
parallel() 將任務功能和/或組合操做組合成同時執行的較大操做
watch() 監聽 globs 並在發生更改時運行任務
task() 在任務系統中定義任務
registry() 容許將自定義的註冊表插入到任務系統中,以期提供共享任務或加強功能
tree() 獲取當前任務依賴關係樹——在極少數狀況下須要它
Vinyl 虛擬的文件格式
Vinyl.isVinyl() 檢測一個對象(object)是不是一個 Vinyl 實例
Vinyl.isCustomProp() 肯定一個屬性是否由 Vinyl 在內部進行管理

咱們在使用 gulp 時,通常只須要用到 4 個 API,分別是 gulp.src()、gulp.dest()、gulp.task()、gulp.watch(),下面咱們詳細介紹一個這 4 個經常使用 API 的使用。gulp

gulp.src()方法

gulp.src() 方法用於建立一個流。可是要注意的是這個流裏的內容不是原始的文件流,而是一個虛擬文件對象流(vinyl files),這個虛擬文件對象中存儲着原始文件的路徑、文件名、內容等信息。數組

語法以下所示:函數

gulp.src(globs, [options])
  • globs :文件匹配模式(類型正則表達式),用來匹配文件路徑(包括文件名),也能夠直接指定某個具體的文件路徑。
  • options:可選參數,一般狀況下不須要用到。

示例:ui

例以下面這個例子,將 input 文件夾中的 .js 文件複製到 output 文件夾中:插件

const { src, dest } = require('gulp');

function copy() {
  return src('input/*.js')
    .pipe(dest('output/'));
}

exports.copy = copy;

執行 gulp copy 命令後,文件成功被複制。命令行

gulp.dest()方法

gulp.dest() 方法能夠建立一個用於將 Vinyl 對象寫入到文件系統的流。code

語法以下:對象

gulp.dest(path[ , options])
  • path:爲寫入文件的路徑。
  • options:可選的參數對象,一般用不到。

gulp.dest() 方法是和 gulp.src() 方法搭配使用的,例如上述這個複製文件的示例。進程

gulp 的使用流程通常是,首先經過 gulp.src() 方法獲取咱們想要處理的文件流,而後把文件流經過 pipe 方法導入到 gulp 插件中,最後把通過插件處理後的流再經過 pipe 方法導入到 gulp.dest() 中,gulp.dest() 方法則把流中的內容寫入到文件中。

注意,給 gulp.dest() 傳入的路徑參數,只能用來指定要生成的文件的目錄,而不能指定生成文件的文件名,它生成文件的文件名使用的是導入到它的文件流自身的文件名,因此生成的文件名是由導入到它的文件流決定的。

gulp.task()方法

gulp.task() 方法用於在任務系統中定義任務,而後能夠從命令行和 series()、parallel()、lastrun() 等 API 訪問該定義好的任務。

語法以下所示:

gulp.task( name [ , deps ] , fn )
  • name:任務名。
  • deps:是當前定義的任務須要依賴的其餘的任務,爲一個數組。當前定義的任務會在全部依賴的任務執行完畢後纔開始執行。若是沒有依賴,則能夠省略這個參數。
  • fn:可選參數,爲任務函數,咱們把任務要執行的代碼都寫在裏面。

示例:

task() 方法的用法有下面幾種:

  • 將命名函數註冊爲任務,其中函數名 test 就是任務名:
const { task } = require('gulp');

function test(cb) {
  console.log("命令函數")
  cb();
}

task(test);
  • 將匿名函數註冊爲任務:
const { task } = require('gulp');

task('test', function(cb) {
  console.log("匿名函數")
  cb();
});
  • 檢索先前已註冊的任務:
const { task } = require('gulp');

task('test', function(cb) {
  cb();
});

const test = task('test');

gulp.watch()方法

gulp.watch() 方法用來監視文件的變化,當文件發生變化後,咱們能夠利用它來執行相應的任務,例如文件壓縮等。

語法以下所示:

gulp.watch(glob [ , opts] , tasks)
  • glob:爲要監視的文件匹配模式,規則和用法與 gulp.src()方法中的glob相同。
  • opts:爲一個可選的配置對象,一般不須要用到。
  • tasks:爲文件變化後要執行的任務,爲一個數組。

示例:

例如使用 gulp.watch 語句監聽文件變化:

const { watch } = require('gulp');

watch(['input/*.js', '!input/one.js'], function(cb) {
  cb();
});
相關文章
相關標籤/搜索