src()#

创建一个流,用于从文件系统读取 Vinyl 对象。

注意:BOM(字节顺序标记)在 UTF-8 中没有用途,并且将从 src() 读取的 UTF-8 文件中删除,除非使用 removeBOM 选项禁用。

用法#

const { src, dest } = require('gulp');
函数 copy() {
返回 src('input/*.js')
.pipe(dest('output/'));
}
导出.copy = copy;

签名#

src(globs, [options])

参数#

参数类型注释
globs字符串
数组
Globs 在文件系统上监视。
options对象在下面的 选项 中详细说明。

返回#

一个流,可以在管道开始或中间使用,以根据给定的 glob 添加文件。

错误#

globs 参数只能匹配一个文件(例如 foo/bar.js)且找不到匹配项时,抛出带有消息的错误,“未找到具有单数 glob 的文件”。要禁止此错误,请将 allowEmpty 选项设置为 true

当在 globs 中给出了无效的 glob 时,抛出带有消息的错误,“无效的 glob 参数”。

选项#

对于接受函数的选项,将使用每个 Vinyl 对象调用传递的函数,并且必须返回另一个列出类型的值。

名称类型默认值注释
缓冲区布尔值
函数
true当为 true 时,文件内容将缓冲到内存中。如果为 false,则 Vinyl 对象的 contents 属性将是一个暂停的流。可能无法缓冲大文件的内容。
注意:插件可能未实现对流式内容的支持。
读取布尔值
函数
true如果为 false,则不会读取文件,并且它们的 Vinyl 对象将无法通过 .dest() 写入磁盘。
日期
时间戳
函数
设置后,仅为自指定时间以来修改的文件创建 Vinyl 对象。
removeBOM布尔值
函数
true当为 true 时,从 UTF-8 编码的文件中删除 BOM。如果为 false,则忽略 BOM。
sourcemaps布尔值
函数
false如果为 true,则启用在创建的 Vinyl 对象上启用 sourcemaps 支持。加载内联 sourcemaps 并解析外部 sourcemap 链接。
resolveSymlinks布尔值
函数
true当为 true 时,递归解析符号链接到其目标。如果为 false,则保留符号链接并将 Vinyl 对象的 symlink 属性设置为原始文件的路径。
cwd字符串process.cwd()将与任何相对路径组合以形成绝对路径的目录。对于绝对路径,将忽略此项。用于避免将 globspath.join() 结合使用。
此选项直接传递给 glob-stream
base字符串显式设置创建的 Vinyl 对象上的 base 属性。在 API 概念 中详细说明。
此选项直接传递给 glob-stream
cwdbase布尔值false如果为真,cwdbase 选项应对齐。
此选项直接传递给 glob-stream
root字符串globs 相对于其解析的根路径。
此选项直接传递给 glob-stream
allowEmpty布尔值false如果为假,则只能匹配一个文件(例如 foo/bar.js)的 globs 在找不到匹配项时会引发错误。如果为真,则抑制 glob 失败。
此选项直接传递给 glob-stream
uniqueBy字符串
函数
'path'通过比较字符串属性名称或函数的结果,从流中删除重复项。
注意:使用函数时,该函数会接收流式传输数据(包含 cwdbasepath 属性的对象)。
dot布尔值false如果为真,则针对点文件(如 .gitignore)比较 glob。
此选项直接传递给 node-glob
silent布尔值true如果为真,则抑制在 stderr 上打印的警告。
注意:此选项直接传递给 node-glob,但默认为 true,而不是 false
mark布尔值false如果为真,则会将 / 字符追加到目录匹配项。通常不需要,因为路径在管道中已标准化。
此选项直接传递给 node-glob
nosort布尔值false如果为真,则禁用对 glob 结果进行排序。
此选项直接传递给 node-glob
stat布尔值false如果为真,则对所有结果调用 fs.stat()。这会增加额外的开销,通常不应使用。
此选项直接传递给 node-glob
strict布尔值false如果为真,则在尝试读取目录时遇到意外问题时会引发错误。
此选项直接传递给 node-glob
nounique布尔值false如果为假,则防止结果集中出现重复文件。
此选项直接传递给 node-glob
debug布尔值false如果为真,则调试信息将记录到命令行。
此选项直接传递给 node-glob
nobrace布尔值false如果为真,则避免扩展大括号集 - 例如 {a,b}{1..3}
此选项直接传递给 node-glob
noglobstar布尔值false如果为真,则将双星 glob 字符视为单星 glob 字符。
此选项直接传递给 node-glob
noext布尔值false如果为真,则避免匹配 extglob 模式 - 例如 +(ab)
此选项直接传递给 node-glob
nocase布尔值false如果为真,则执行不区分大小写的匹配。
注意:在不区分大小写的文件系统上,非魔术模式将默认匹配。
此选项直接传递给 node-glob
matchBase布尔值false如果为真且 glob 不包含任何 / 字符,则遍历所有目录并匹配该 glob - 例如 *.js 将被视为等效于 **/*.js
此选项直接传递给 node-glob
nodir布尔值false如果为真,则仅匹配文件,不匹配目录。
注意:要仅匹配目录,请以 / 结尾。
此选项直接传递给 node-glob
ignore字符串
数组
从匹配项中排除的 glob。此选项与否定 globs 结合使用。
注意:无论其他任何设置如何,这些 glob 始终与点文件匹配。
此选项直接传递给 node-glob
follow布尔值false如果为真,则在扩展 ** glob 时将遍历符号链接的目录。
注意:这可能会导致循环链接出现问题。
此选项直接传递给 node-glob
realpath布尔值false如果为真,则对所有结果调用 fs.realpath()。这可能会导致出现悬空链接。
此选项直接传递给 node-glob
cache对象先前生成的缓存对象 - 避免某些文件系统调用。
此选项直接传递给 node-glob
statCache对象先前生成的fs.Stat结果的缓存 - 避免某些文件系统调用。
此选项直接传递给 node-glob
symlinks对象先前生成的符号链接的缓存 - 避免某些文件系统调用。
此选项直接传递给 node-glob
nocomment布尔值false为 false 时,将 glob 开头的#字符视为注释。
此选项直接传递给 node-glob

Sourcemaps#

Sourcemap 支持直接内置到src()dest()中,但默认情况下处于禁用状态。启用它以生成内联或外部 sourcemap。

内联 sourcemap

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: '.' }));