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