Vinyl#

一种虚拟文件格式。当文件被 src() 读取时,会生成一个 Vinyl 对象来表示该文件,包括路径、内容和其他元数据。

可以使用 插件对 Vinyl 对象应用转换。它们还可以使用 dest() 保存在文件系统中。

在创建自己的 Vinyl 对象时,请使用外部 vinyl 模块,而不是使用 src() 生成,如下面的用法所示。

用法#

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';
文件.目录名 = '/specs';
文件.路径 === '/specs/file.js';
文件.基本名 === 'file.js';
文件.基本名 = 'file.txt';
文件.路径 === '/specs/file.txt';
文件.词干 === 'file';
文件.词干 = 'foo';
文件.路径 === '/specs/foo.txt';
文件.扩展名 === '.txt';
文件.扩展名 = '.js';
文件.路径 === '/specs/foo.js';

签名#

新建 Vinyl([选项])

参数#

参数类型备注
选项对象详见下文的 选项

返回#

Vinyl 类的一个实例,表示一个单独的虚拟文件,详见下文的 Vinyl 实例

错误#

当任何传递的选项不符合 实例属性定义(例如,如果 path 设置为一个数字)时,将按表中定义的抛出。

选项#

名称类型默认值备注
cwd字符串process.cwd()将派生相对路径的目录。将标准化并删除尾部分隔符。
base字符串用于计算relative实例属性。如果未设置,则回退到cwd的值。通常设置为glob base。将标准化并删除尾部分隔符。
path字符串完整绝对文件路径。将标准化并删除尾部分隔符。
history数组[ ]一个路径数组,用于预填充 Vinyl 实例的history。通常来自从以前的 Vinyl 对象派生新的 Vinyl 对象。如果同时传递pathhistory,则将path追加到history。每个项目都将标准化并删除尾部分隔符。
stat对象fs.Stats的一个实例,通常是在文件上调用fs.stat()的结果。用于确定 Vinyl 对象是否表示目录或符号链接。
contentsReadableStream
Buffer
null
null文件的内容。如果contents是一个 ReadableStream,则将其包装在一个cloneable-readable流中。

options上的任何其他属性都将直接分配给 Vinyl 实例。

const Vinyl = require('vinyl');
const file = new Vinyl({ foo: 'bar' });
file.foo === 'bar';

Vinyl 实例#

每个 Vinyl 对象实例都将具有属性和方法来访问和/或修改有关虚拟文件的信息。

实例属性#

所有内部管理的路径 - 除了 contentsstat 之外的任何实例属性 - 都已标准化并删除了尾随分隔符。有关更多信息,请参见 标准化和连接

属性类型说明抛出
contentsReadableStream
Buffer
null
获取并设置虚拟文件的内容。如果设置为 ReadableStream,则将其包装在 cloneable-readable 流中。如果设置为 ReadableStream、Buffer 或 null 以外的任何值。
stat对象获取并设置 fs.Stats 的实例。用于确定 Vinyl 对象是否表示目录或符号链接。
cwd字符串获取并设置当前工作目录。用于推导相对路径。如果设置为一个空字符串或任何非字符串值。
base字符串获取并设置基本目录。用于计算 relative 实例属性。在由 src() 生成的 Vinyl 对象上将设置为 glob 基准。如果设置为 nullundefined,则回退到 cwd 实例属性的值。如果设置为一个空字符串或任何非字符串值(除了 nullundefined)。
path字符串获取并设置完整绝对文件路径。设置为与当前 path 不同的值会将新路径附加到 history 实例属性。如果设置为任何非字符串值。
history数组Vinyl 对象已分配的所有 path 值的数组。第一个元素是原始路径,最后一个元素是当前路径。此属性及其元素应视为只读,并且只能通过设置 path 实例属性来间接更改。
relative字符串获取 basepath 实例属性之间的相对路径段。如果设置为任何值。如果在 path 不可用的情况下访问。
dirname字符串获取并设置 path 实例属性的目录。如果在 path 不可用的情况下访问。
stem字符串获取并设置 path 实例属性的主干(不带扩展名的文件名)。如果在 path 不可用的情况下访问。
extname字符串获取并设置 path 实例属性的扩展名。如果在 path 不可用的情况下访问。
basename字符串获取并设置 path 实例属性的文件名(stem + extname)。如果在 path 不可用的情况下访问。
symlink字符串获取并设置符号链接的引用路径。如果设置为任何非字符串值。

实例方法#

方法返回类型返回
isBuffer()布尔值如果 contents 实例属性是 Buffer,则返回 true。
isStream()布尔值如果 contents 实例属性是 Stream,则返回 true。
isNull()布尔值如果 contents 实例属性为 null,则返回 true。
isDirectory()布尔值如果实例表示目录,则返回 true。当 isNull() 返回 true、stat 实例属性为对象且 stat.isDirectory() 返回 true 时,实例被视为目录。这假设 Vinyl 对象是使用有效的(或正确模拟的)fs.Stats 对象构建的。
isSymbolic()布尔值如果实例表示符号链接,则返回 true。当 isNull() 返回 true、stat 实例属性为对象且 stat.isSymbolicLink() 返回 true 时,实例被视为符号链接。这假设 Vinyl 对象是使用有效的(或正确模拟的)fs.Stats 对象构建的。
clone([options])对象一个具有所有克隆属性的新 Vinyl 对象。默认情况下,自定义属性是深度克隆的。如果 deep 选项为 false,自定义属性将被浅克隆。如果 contents 选项为 false 且 contents 实例属性为 Buffer,则将重用 Buffer 而不是克隆它。
inspect()字符串返回 Vinyl 对象的格式化解释。由 Node 的 console.log 自动调用。

规范化和连接#

所有路径属性都由它们的 setter 规范化。使用 / 连接路径,而不是使用 path.join(),并且规范化将在所有平台上正确发生。切勿使用 \ 连接 - 它是 POSIX 系统上的有效文件名字符。

const file = new File();
file.path = '/' + 'test' + '/' + 'foo.bar';
console.log(file.path);
// posix => /test/foo.bar
// win32 => \\test\\foo.bar