跳到主要内容

src()

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

注意: BOM(字节顺序标记)在 UTF-8 中没有用处,因此 src() 读取的 UTF-8 文件中的 BOM 将被移除,除非使用 removeBOM 选项禁用此功能。

使用方法

const { src, dest } = require('gulp');

function copy() {
return src('input/*.js')
.pipe(dest('output/'));
}

exports.copy = copy;

签名

src(globs, [options])

参数

参数类型说明
globsstring
array
在文件系统上观察的 Globs
optionsobject详细信息请参见下方的选项

返回值

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

错误

globs 参数只能匹配一个文件(如 foo/bar.js)且未找到匹配项时,抛出错误,错误信息为"File not found with singular glob"(使用单数 glob 未找到文件)。要抑制此错误,请将 allowEmpty 选项设置为 true

当在 globs 中提供无效的 glob 时,抛出错误,错误信息为"Invalid glob argument"(无效的 glob 参数)。

选项

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

名称类型默认值说明
encodingstring
boolean
"utf8"当为 false 时,文件内容被视为二进制。当为字符串时,该值被用作文本编码。
bufferboolean
function
true当为 true 时,文件内容被缓冲到内存中。如果为 false,Vinyl 对象的 contents 属性将是一个暂停的流。可能无法缓冲大文件的内容。
注意: 插件可能不支持流式内容。
readboolean
function
true如果为 false,文件将不会被读取,其 Vinyl 对象也不能通过 .dest() 写入磁盘。
sincedate
timestamp
function
设置后,只为自指定时间以来修改的文件创建 Vinyl 对象。
removeBOMboolean
function
true当为 true 时,从 UTF-8 编码的文件中移除 BOM。如果为 false,则忽略 BOM。
sourcemapsboolean
function
false如果为 true,在创建的 Vinyl 对象上启用 sourcemaps 支持。加载内联 sourcemaps 并解析外部 sourcemap 链接。
resolveSymlinksboolean
function
true当为 true 时,递归地解析符号链接到它们的目标。如果为 false,保留符号链接并将 Vinyl 对象的 symlink 属性设置为原始文件的路径。
cwdstringprocess.cwd()将与任何相对路径组合形成绝对路径的目录。对于绝对路径会被忽略。用于避免将 globspath.join() 组合。
此选项直接传递给 glob-stream
basestring明确设置创建的 Vinyl 对象上的 base 属性。详细信息请参见 API 概念
此选项直接传递给 glob-stream
cwdbasebooleanfalse如果为 true,cwdbase 选项应该对齐。
此选项直接传递给 glob-stream
rootstringglobs 解析所依据的根路径。
此选项直接传递给 glob-stream
allowEmptybooleanfalse当为 false 时,只能匹配一个文件的 globs(如 foo/bar.js)如果没有找到匹配项会导致抛出错误。如果为 true,则抑制 glob 失败。
此选项直接传递给 glob-stream
uniqueBystring
function
'path'通过比较字符串属性名称或函数的结果从流中删除重复项。
注意: 当使用函数时,函数接收流式数据(包含 cwdbasepath 属性的对象)。
dotbooleanfalse如果为 true,将 globs 与点文件(如 .gitignore)进行比较。
此选项直接传递给 anymatch
nouniquebooleanfalse当为 false 时,防止结果集中出现重复文件。
此选项直接传递给 anymatch
debugbooleanfalse如果为 true,调试信息将被记录到命令行。
此选项直接传递给 anymatch
nobracebooleanfalse如果为 true,避免展开大括号集合 - 例如 {a,b}{1..3}
此选项直接传递给 anymatch
noglobstarbooleanfalse如果为 true,将双星号 glob 字符视为单星号 glob 字符。
此选项直接传递给 anymatch
noextbooleanfalse如果为 true,避免匹配 extglob 模式 - 例如 +(ab)
此选项直接传递给 anymatch
nocasebooleanfalse如果为 true,执行不区分大小写的匹配。
注意: 在不区分大小写的文件系统上,非魔术模式默认会匹配。
此选项直接传递给 anymatch
matchBasebooleanfalse如果为 true 且 globs 不包含任何 / 字符,则遍历所有目录并匹配该 glob - 例如 *.js 将被视为等同于 **/*.js
此选项直接传递给 anymatch
ignorestring
array
要从匹配中排除的 Globs。该选项与否定的 globs 组合。
注意: 无论其他设置如何,这些 globs 始终与点文件匹配。
此选项直接传递给 anymatch

Sourcemaps

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

内联 sourcemaps:

const { src, dest } = require('gulp');
const uglify = require('gulp-uglify');

src('input/**/*.js', { sourcemaps: true })
.pipe(uglify())
.pipe(dest('output/', { sourcemaps: true }));

外部 sourcemaps:

const { src, dest } = require('gulp');
const uglify = require('gulp-uglify');

src('input/**/*.js', { sourcemaps: true })
.pipe(uglify())
.pipe(dest('output/', { sourcemaps: '.' }));