本節咱們來看一下 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() 方法用於建立一個流。可是要注意的是這個流裏的內容不是原始的文件流,而是一個虛擬文件對象流(vinyl files),這個虛擬文件對象中存儲着原始文件的路徑、文件名、內容等信息。數組
語法以下所示:函數
gulp.src(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() 方法能夠建立一個用於將 Vinyl 對象寫入到文件系統的流。code
語法以下:對象
gulp.dest(path[ , options])
gulp.dest() 方法是和 gulp.src() 方法搭配使用的,例如上述這個複製文件的示例。進程
gulp 的使用流程通常是,首先經過 gulp.src() 方法獲取咱們想要處理的文件流,而後把文件流經過 pipe 方法導入到 gulp 插件中,最後把通過插件處理後的流再經過 pipe 方法導入到 gulp.dest() 中,gulp.dest() 方法則把流中的內容寫入到文件中。
注意,給 gulp.dest() 傳入的路徑參數,只能用來指定要生成的文件的目錄,而不能指定生成文件的文件名,它生成文件的文件名使用的是導入到它的文件流自身的文件名,因此生成的文件名是由導入到它的文件流決定的。
gulp.task() 方法用於在任務系統中定義任務,而後能夠從命令行和 series()、parallel()、lastrun() 等 API 訪問該定義好的任務。
語法以下所示:
gulp.task( name [ , deps ] , fn )
示例:
task() 方法的用法有下面幾種:
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(glob [ , opts] , tasks)
示例:
例如使用 gulp.watch 語句監聽文件變化:
const { watch } = require('gulp'); watch(['input/*.js', '!input/one.js'], function(cb) { cb(); });