gulp.src()

2020-09-30 18:05 更新

gulp.src()介紹

創(chuàng)建一個流,用于從文件系統讀取 Vinyl 對象。

注:BOMs(字節(jié)順序標記)在 UTF-8 中沒有任何作用,除非使用 removeBOM 選項禁用,否則 src() 將從讀取的 UTF-8 文件中刪除BOMs。

gulp.src()用法

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

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

exports.copy = copy; 

gulp.src()函數原型

src(globs, [options])

參數

參數 類型 描述
globs string
array
Globs to watch on the file system.
options object 在下面的選項中詳細說明。

返回值

返回一個可以在管道的開始或中間使用的流,用于根據給定的 globs 添加文件。

可能出現的錯誤

globs 參數只能匹配一個文件(如 foo/bar.js)而且沒有找到匹配時,會拋出一個錯誤,提示 "File not found with singular glob"。若要抑制此錯誤,請將 allowEmpty 選項設置為 true。

當在 globs 中給出一個無效的 glob 時,拋出一個錯誤,并顯示 "Invalid glob argument"。

選項

對于接受函數的選項,傳遞的函數將與每個 Vinyl 對象一起調用,并且必須返回另一個列出類型的值。

名稱 類型 默認值 描述
buffer boolean
function
true 當為 true 時,文件內容被緩沖到內存中。如果為false,Vinyl 對象的 contents 屬性將是一個暫停流??赡軣o法緩沖大文件的內容。
注意:插件可能不支持流媒體內容。
read boolean
function
true 如果為 false,文件將不會被讀取,并且它們的 Vinyl 對象將不能通過 .dest() 寫入磁盤。
since date
timestamp
function
設置時,僅為自指定時間以來修改過的文件創(chuàng)建 Vinyl 對象。
removeBOM boolean
function
true 如果為 true,則從 UTF-8 編碼的文件中刪除 BOM。如果為 false,則忽略 BOM。
sourcemaps boolean
function
false 如果為 true,則在創(chuàng)建的 Vinyl 對象上啟用 sourcemaps。加載內聯 sourcemaps 并解析外部 sourcemap 鏈接。
resolveSymlinks boolean
function
true true 時,遞歸地解析鏈接到目標的符號(symbolic)鏈接。如果為 false,則保留符號鏈接并將 Vinyl 對象的 symlink 屬性設置為原始文件的路徑。
cwd string process.cwd() 將與任何相對路徑相結合以形成絕對路徑的目錄。對于絕對路徑忽略。用于避免將 globs 與 path.join() 相結合。
此選項直接傳遞給 glob-stream。
base string 顯式地在創(chuàng)建的 Vinyl 對象上設置 base 屬性。詳情請參見 API Concepts.
此選項直接傳遞給 glob-stream。
cwdbase boolean false 如果為 true,cwdbase 選項應該對應起來。
此選項直接傳遞給 glob-stream。
root string 解析 globs 的根路徑.
此選項直接傳遞給 glob-stream。
allowEmpty boolean false 當為 false 時,只能匹配一個文件的 globs (如 foo/bar.js)如果沒有找到匹配的文件,就會引發(fā)一個錯誤。如果為 true 的,則不會報錯。
此選項直接傳遞給 glob-stream。
uniqueBy string
function
'path' 通過比較字符串屬性名或函數的結果,從流中刪除重復項。
注意:當使用函數時,函數接收流數據(對象包含 cwd、base、path 屬性)。
dot boolean false 如果為 true,請將 globs 與 .gitignore 等點文件進行比較。
此選項直接傳遞給 node-glob。
silent boolean true 如果為 true,則禁止在 stderr 上打印警告。
注意: 此選項直接傳遞給 node-glob,但默認為 true 而不是 false
mark boolean false 如果為 true,將向目錄匹配項追加一個 / 字符。通常不需要,因為路徑是在管道中規(guī)范化的
此選項直接傳遞給 node-glob。
nosort boolean false 如果為 true,禁用對 glob 結果排序。
此選項直接傳遞給 node-glob。
stat boolean false 如果為 true, fs.stat() 在所有的結果上被調用。這增加了額外的開銷,通常不應該使用。
此選項直接傳遞給 node-glob。
strict boolean false 如果為 true,如果在嘗試讀取目錄時遇到意外問題,將拋出錯誤。
此選項直接傳遞給 node-glob。
nounique boolean false 當為 false 時,可以防止結果集中出現重復的文件。
此選項直接傳遞給 node-glob。
debug boolean false 如果為 true,調試信息將被記錄到命令行。
此選項直接傳遞給 node-glob。
nobrace boolean false 如果為 true,避免擴大大括號集合 - 例如 {a,b}{1..3}.
此選項直接傳遞給 node-glob。
noglobstar boolean false 如果為 true,將雙星(**) glob 字符視為單星(*) glob 字符
此選項直接傳遞給 node-glob。
noext boolean false 如果為 true,避免匹配 extglob 模式 - 例如 +(ab).
此選項直接傳遞給 node-glob。
nocase boolean false 如果為 true,則執(zhí)行不區(qū)分大小寫的匹配。
注意: 在不區(qū)分大小寫的文件系統上,默認情況下,non-magic 模式將被匹配。
此選項直接傳遞給 node-glob。
matchBase boolean false 如果true 并且 globs 不包含任何 / 字符,遍歷所有目錄并匹配該 glob —— *.js 將被視為等同于 **/*.js。
此選項直接傳遞給 node-glob。
nodir boolean false 若要僅匹配目錄,glob 請以 / 結束。
此選項直接傳遞給 node-glob。
ignore string
array
從匹配中排除。這個選項與否定的(negated) globs 組合在一起。
注意: 無論其他設置如何,這些 globs 總是與點文件匹配。
此選項直接傳遞給 node-glob。
follow boolean false 如果為 true,在展開 ** globs 時將遍歷符號鏈接目錄。
注意: 這可能導致循環(huán)鏈接出現問題。
此選項直接傳遞給 node-glob。
realpath boolean false 如果為 true,fs.realpath() 在所有的結果上調用。這可能導致懸掛式(dangling)鏈接。
此選項直接傳遞給 node-glob。
cache object 之前生成的緩存對象——避免了一些文件系統調用。
此選項直接傳遞給 node-glob。
statCache object 之前生成的 fs.Stat 緩存——避免了一些文件系統調用。
此選項直接傳遞給 node-glob。
symlinks object 之前生成的符號鏈接緩存——避免了一些文件系統調用。
此選項直接傳遞給 node-glob。
nocomment boolean false 當為 false 時,將 glob 開頭的 # 字符視為注釋。
此選項直接傳遞給 node-glob。

資源映射

資源映射支持直接構建到 src()dest() 中,但是默認情況下是禁用的。使其能夠生成內聯或外部資源映射。

內聯資源映射:

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

src('input/**/*.js', { sourcemaps: true })
  .pipe(uglify())
  .pipe(dest('output/', { sourcemaps: true }));

外部資源映射:

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

src('input/**/*.js', { sourcemaps: true })
  .pipe(uglify())
  .pipe(dest('output/', { sourcemaps: '.' }));


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號