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.src()方法

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

語法如下所示:

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

示例:

例如下面這個例子,將 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 對象寫入到文件系統的流。

語法如下:

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();
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章