Vinyl#
一种虚拟文件格式。当文件被 src() 读取时,会生成一个 Vinyl 对象来表示该文件,包括路径、内容和其他元数据。
可以使用 插件对 Vinyl 对象应用转换。它们还可以使用 dest() 保存在文件系统中。
在创建自己的 Vinyl 对象时,请使用外部 vinyl 模块,而不是使用 src() 生成,如下面的用法所示。
用法#
签名#
参数#
| 参数 | 类型 | 备注 |
|---|---|---|
| 选项 | 对象 | 详见下文的 选项。 |
返回#
Vinyl 类的一个实例,表示一个单独的虚拟文件,详见下文的 Vinyl 实例。
错误#
当任何传递的选项不符合 实例属性定义(例如,如果 path 设置为一个数字)时,将按表中定义的抛出。
选项#
| 名称 | 类型 | 默认值 | 备注 |
|---|---|---|---|
| cwd | 字符串 | process.cwd() | 将派生相对路径的目录。将标准化并删除尾部分隔符。 |
| base | 字符串 | 用于计算relative实例属性。如果未设置,则回退到cwd的值。通常设置为glob base。将标准化并删除尾部分隔符。 | |
| path | 字符串 | 完整绝对文件路径。将标准化并删除尾部分隔符。 | |
| history | 数组 | [ ] | 一个路径数组,用于预填充 Vinyl 实例的history。通常来自从以前的 Vinyl 对象派生新的 Vinyl 对象。如果同时传递path和history,则将path追加到history。每个项目都将标准化并删除尾部分隔符。 |
| stat | 对象 | fs.Stats的一个实例,通常是在文件上调用fs.stat()的结果。用于确定 Vinyl 对象是否表示目录或符号链接。 | |
| contents | ReadableStream Buffer null | null | 文件的内容。如果contents是一个 ReadableStream,则将其包装在一个cloneable-readable流中。 |
options上的任何其他属性都将直接分配给 Vinyl 实例。
Vinyl 实例#
每个 Vinyl 对象实例都将具有属性和方法来访问和/或修改有关虚拟文件的信息。
实例属性#
所有内部管理的路径 - 除了 contents 和 stat 之外的任何实例属性 - 都已标准化并删除了尾随分隔符。有关更多信息,请参见 标准化和连接。
| 属性 | 类型 | 说明 | 抛出 |
|---|---|---|---|
| contents | ReadableStream Buffer null | 获取并设置虚拟文件的内容。如果设置为 ReadableStream,则将其包装在 cloneable-readable 流中。 | 如果设置为 ReadableStream、Buffer 或 null 以外的任何值。 |
| stat | 对象 | 获取并设置 fs.Stats 的实例。用于确定 Vinyl 对象是否表示目录或符号链接。 | |
| cwd | 字符串 | 获取并设置当前工作目录。用于推导相对路径。 | 如果设置为一个空字符串或任何非字符串值。 |
| base | 字符串 | 获取并设置基本目录。用于计算 relative 实例属性。在由 src() 生成的 Vinyl 对象上将设置为 glob 基准。如果设置为 null 或 undefined,则回退到 cwd 实例属性的值。 | 如果设置为一个空字符串或任何非字符串值(除了 null 或 undefined)。 |
| path | 字符串 | 获取并设置完整绝对文件路径。设置为与当前 path 不同的值会将新路径附加到 history 实例属性。 | 如果设置为任何非字符串值。 |
| history | 数组 | Vinyl 对象已分配的所有 path 值的数组。第一个元素是原始路径,最后一个元素是当前路径。此属性及其元素应视为只读,并且只能通过设置 path 实例属性来间接更改。 | |
| relative | 字符串 | 获取 base 和 path 实例属性之间的相对路径段。 | 如果设置为任何值。如果在 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 系统上的有效文件名字符。