虛擬的文件格式。當(dāng) src() 讀取文件時(shí),將生成一個(gè) Vinyl 對(duì)象來(lái)表示文件——包括路徑、內(nèi)容和其他元數(shù)據(jù)。
Vinyl 對(duì)象可以使用插件進(jìn)行轉(zhuǎn)換。還可以使用 dest() 將它們持久化到文件系統(tǒng)。
當(dāng)創(chuàng)建您自己的 Vinyl 對(duì)象時(shí)——而不是使用 src() 生成——使用外部 vinyl 模塊,如下面的用法所示。
const Vinyl = require('vinyl');
const file = new Vinyl({
cwd: '/',
base: '/test/',
path: '/test/file.js',
contents: new Buffer('var x = 123')
});
file.relative === 'file.js';
file.dirname === '/test';
file.dirname = '/specs';
file.path === '/specs/file.js';
file.basename === 'file.js';
file.basename = 'file.txt';
file.path === '/specs/file.txt';
file.stem === 'file';
file.stem = 'foo';
file.path === '/specs/foo.txt';
file.extname === '.txt';
file.extname = '.js';
file.path === '/specs/file.js';
new Vinyl([options])
參數(shù) | 類(lèi)型 | 描述 |
---|---|---|
options | object | 詳情請(qǐng)參加下文 選項(xiàng)。 |
返回一個(gè) Vinyl 類(lèi)的實(shí)例,表示一個(gè)單獨(dú)的虛擬文件,詳見(jiàn)下面的 Vinyl 實(shí)例。
當(dāng)傳遞的任何選項(xiàng)都不符合表中定義的實(shí)例屬性定義(如 path 被設(shè)置為一個(gè)數(shù)字)時(shí)拋出錯(cuò)誤。
name | type | default | note |
---|---|---|---|
cwd | string | process.cwd() | 將從中推導(dǎo)相對(duì)路徑的目錄。將被規(guī)范化,并刪除尾隨分隔符。 |
base | string | 用于計(jì)算 relative 實(shí)例屬性。 如果沒(méi)有設(shè)置,則回退到 cwd 的值。通常設(shè)置為 glob base。將被規(guī)范化,并刪除尾隨分隔符。 | |
path | string | 完整的絕對(duì)文件路徑。將被規(guī)范化,并刪除尾隨分隔符。 | |
history | array | [ ] | 預(yù)先填充 Vinyl 實(shí)例的 history 的路徑數(shù)組。通常來(lái)自于從以前的 Vinyl 對(duì)象派生出一個(gè)新的 Vinyl 對(duì)象。如果 path 和 history 都被傳遞,path 將被附加到 history 中。每一項(xiàng)都將被規(guī)范化,并刪除尾隨分隔符。 |
stat | object | 一個(gè) fs.Stats 實(shí)例,通常是對(duì)文件調(diào)用 fs.stat() 的結(jié)果。用于確定 Vinyl 對(duì)象是否表示目錄或符號(hào)鏈接。 | |
contents | ReadableStream Buffer null | null | 文件的內(nèi)容。如果 contents 是一個(gè) ReadableStream,它將被包裝在一個(gè) 可克隆可讀的 流中。 |
options 上的任何其他屬性都將直接分配給 Vinyl 實(shí)例。
const Vinyl = require('vinyl');
const file = new Vinyl({ foo: 'bar' });
file.foo === 'bar';
每個(gè) Vinyl 對(duì)象實(shí)例都具有訪問(wèn)和/或修改虛擬文件信息的屬性和方法。
所有內(nèi)部管理的路徑——除了 contents 和 stat 之外的任何實(shí)例屬性——都被規(guī)范化,并刪除了末尾分隔符。有關(guān)更多信息,請(qǐng)參見(jiàn)規(guī)范化和連接。
屬性 | 類(lèi)型 | 描述 | 拋出錯(cuò)誤 | |
---|---|---|---|---|
contents | ReadableStream Buffer null | 獲取和設(shè)置虛擬文件的內(nèi)容。如果將其設(shè)置為 ReadableStream,它將被包裝在一個(gè) 可克隆可讀的 流中。 | 如果設(shè)置為 ReadableStream, Buffer,或者 null 之外的任何值 | |
stat | object | 獲取或設(shè)置 fs.Stats 的實(shí)例。當(dāng)確定 Vinyl 對(duì)象是否表示目錄或符號(hào)鏈接時(shí)使用。 | ||
cwd | string | 獲取并設(shè)置當(dāng)前工作目錄。用于推導(dǎo)相對(duì)路徑。 | 如果設(shè)置為空字符串或任何非字符串值。 | |
base | string | 獲取和設(shè)置基目錄。用于計(jì)算 relative 實(shí)例屬性。 在由 src() 生成的 Vinyl 對(duì)象上,將設(shè)置為 [glob base][global -base-concepts]。如果設(shè)置為 null 或 undefined ,則會(huì)退到 cwd 實(shí)例屬性的值。 | 如果設(shè)置為空字符串或任何非字符串值(null 或 undefined 除外)。 | |
path | string | 獲取和設(shè)置完整的絕對(duì)文件路徑。設(shè)置為與當(dāng)前 path 不同的值會(huì)將新路徑附加到 history 實(shí)例屬性中。 | 如果設(shè)置為任何非字符串值。 | |
history | array | 已分配的 Vinyl 對(duì)象的所有 path 值的數(shù)組。第一個(gè)元素是原始路徑,最后一個(gè)元素是當(dāng)前路徑。此屬性及其元素應(yīng)被視為只讀,僅通過(guò)設(shè)置 path 實(shí)例屬性間接更改。 | ||
relative | string | 獲取 base 和 path 實(shí)例屬性之間的相對(duì)路徑段。 | 如果設(shè)置為任何值。如果在 path 不可用時(shí)訪問(wèn)。 | |
dirname | string | 獲取和設(shè)置 path 實(shí)例屬性的目錄。 | 如果在 path 不可用時(shí)訪問(wèn) | |
stem | string | 獲取并設(shè)置 path 實(shí)例屬性的 stem(沒(méi)有擴(kuò)展的文件名)。 | 如果在 path 不可用時(shí)訪問(wèn) | |
extname | string | 獲取并設(shè)置 path 實(shí)例屬性的擴(kuò)展名。 | 如果在 path 不可用時(shí)訪問(wèn) | |
basename | string | 獲取和設(shè)置 path 實(shí)例屬性的文件名(stem + extname )。 | 如果在 path 不可用時(shí)訪問(wèn) | |
symlink | string | 獲取和設(shè)置符號(hào)鏈接的引用路徑。 | 如果設(shè)置為任何非字符串值。 |
方法 | 返回值類(lèi)型 | 返回值 |
---|---|---|
isBuffer() | boolean | 如果 contents 實(shí)例屬性是一個(gè) Buffer,則返回 true。 |
isStream() | boolean | 如果 contents 實(shí)例屬性是一個(gè) Stream,則返回 true。 |
isNull() | boolean | 如果 contents 實(shí)例屬性為 null ,則返回 true。 |
isDirectory() | boolean | 如果實(shí)例表示一個(gè)目錄,則返回 true。當(dāng) isNull() 返回 true,stat 實(shí)例屬性是一個(gè)對(duì)象,并且 stat.isDirectory() 返回 true 時(shí),實(shí)例被認(rèn)為是一個(gè)目錄。這假設(shè) Vinyl 對(duì)象是用一個(gè)有效的(或適當(dāng)模擬的) fs.Stats 對(duì)象構(gòu)造的。 |
isSymbolic() | boolean | 如果實(shí)例表示符號(hào)鏈接,則返回 true。 當(dāng) isNull() 返回 true,stat 實(shí)例屬性是一個(gè)對(duì)象,并且 stat.isSymbolicLink() 返回 true 時(shí), 實(shí)例被認(rèn)為是 symbolic。 這假設(shè) Vinyl 對(duì)象是用一個(gè)有效的(或適當(dāng)模擬的) fs.Stats 對(duì)象構(gòu)造的。 |
clone([options]) | object | A new Vinyl object with all properties cloned. 一個(gè)使用所有屬性克隆出的新的 Vinyl 對(duì)象。 默認(rèn)情況下,自定義屬性是深拷貝。如果 deep 選項(xiàng)為 false,自定義屬性將被淺拷貝。如果 contents 選項(xiàng)設(shè)置為 fasle 并且 contents 屬性是一個(gè) Buffer,那么這個(gè) Buffer 將被復(fù)用,而不是克隆。 |
inspect() | string | 返回 Vinyl 對(duì)象的格式化說(shuō)明。由 Node 的 console.log 自動(dòng)調(diào)用。 |
所有路徑屬性都由它們的 setter 進(jìn)行規(guī)范化。使用 / 連接路徑,而不是使用 path.join(),這樣就可以在所有平臺(tái)上正確地進(jìn)行規(guī)范化。永遠(yuǎn)不要使用 \ 連接。( \ 是 POSIX 系統(tǒng)上的一個(gè)有效文件名字符。)
const file = new File();
file.path = '/' + 'test' + '/' + 'foo.bar';
console.log(file.path);
// posix => /test/foo.bar
// win32 => \\test\\foo.bar
更多建議: