跳到主要内容

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()将与任何相对路径组合形成绝对路径的目录。对于绝对路径会被忽略。用于避免将 globs 与 path.join() 组合。
此选项直接传递给 glob-stream。
basestring明确设置创建的 Vinyl 对象上的 base 属性。详细信息请参见 API 概念。
此选项直接传递给 glob-stream。
cwdbasebooleanfalse如果为 true,cwd 和 base 选项应该对齐。
此选项直接传递给 glob-stream。
rootstringglobs 解析所依据的根路径。
此选项直接传递给 glob-stream。
allowEmptybooleanfalse当为 false 时,只能匹配一个文件的 globs(如 foo/bar.js)如果没有找到匹配项会导致抛出错误。如果为 true,则抑制 glob 失败。
此选项直接传递给 glob-stream。
uniqueBystring
function
'path'通过比较字符串属性名称或函数的结果从流中删除重复项。
注意: 当使用函数时,函数接收流式数据(包含 cwd、base、path 属性的对象)。
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: '.' }));