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])
参数
参数 | 类型 | 说明 |
---|---|---|
globs | string array | 在文件系统上观察的 Globs。 |
options | object | 详细信息请参见下方的选项。 |
返回值
一个流,可以在管道的开始 或中间使用,用于基于给定的 globs 添加文件。
错误
当 globs
参数只能匹配一个文件(如 foo/bar.js
)且未找到匹配项时,抛出错误,错误信息为"File not found with singular glob"(使用单数 glob 未找到文件)。要抑制此错误,请将 allowEmpty
选项设置为 true
。
当在 globs
中提供无效的 glob 时,抛出错误,错误信息为"Invalid glob argument"(无效的 glob 参数)。
选项
对于接受函数的选项,传入的函数将对每个 Vinyl 对象调用,并且必须返回另一种列出类型的值。
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
encoding | string boolean | "utf8" | 当为 false 时,文件内容被视为二进制。当为字符串时,该值被用作文本编码。 |
buffer | boolean function | true | 当为 true 时,文件内容被缓冲到内存中。如果为 false,Vinyl 对象的 contents 属性将是一个暂停的流。可能无法缓冲大文件的内容。注意: 插件可能不支持流式内容。 |
read | boolean function | true | 如果为 false,文件将不会被读取,其 Vinyl 对象也不能通过 .dest() 写 入磁盘。 |
since | date timestamp function | 设置后,只为自指定时间以来修改的文件创建 Vinyl 对象。 | |
removeBOM | boolean function | true | 当为 true 时,从 UTF-8 编码的文件中移除 BOM。如果为 false,则忽略 BOM。 |
sourcemaps | boolean function | false | 如果为 true,在创建的 Vinyl 对象上启用 sourcemaps 支持。加载内联 sourcemaps 并解析外部 sourcemap 链接。 |
resolveSymlinks | boolean function | true | 当为 true 时,递归地解析符号链接到它们的目标。如果为 false,保留符号链接并将 Vinyl 对象的 symlink 属性设置为原始文件的路径。 |
cwd | string | process.cwd() | 将与任何相对路径组合形成绝对路径的目录。对于绝对路径会被忽略。用于避免将 globs 与 path.join() 组合。此选项直接传递给 glob-stream。 |
base | string | 明确设置创建的 Vinyl 对象上的 base 属性。详细信息请参见 API 概念。此选项直接传递给 glob-stream。 | |
cwdbase | boolean | false | 如果为 true,cwd 和 base 选项应该对齐。此选项直接传递给 glob-stream。 |
root | string | globs 解析所依据的根路径。此选项直接传递给 glob-stream。 | |
allowEmpty | boolean | false | 当为 false 时,只能匹配一个文件的 globs (如 foo/bar.js )如果没有找到匹配项会导致抛出错误。如果为 true,则抑制 glob 失败。此选项直接传递给 glob-stream。 |
uniqueBy | string function | 'path' | 通过比较字符串属性名称或函数的结果从流中删除重复项。 注意: 当使用函数时,函数接收流式数据(包含 cwd 、base 、path 属性的对象)。 |
dot | boolean | false | 如果为 true,将 globs 与点文件(如 .gitignore )进行比较。此选项直接传递给 anymatch。 |
nounique | boolean | false | 当为 false 时,防止结果集中出现重复文件。 此选项直接传递给 anymatch。 |
debug | boolean | false | 如果为 true,调试信息将被记录到命令行。 此选项直接传递给 anymatch。 |
nobrace | boolean | false | 如果为 true,避免展开大括号集合 - 例如 {a,b} 或 {1..3} 。此选项直接传递给 anymatch。 |
noglobstar | boolean | false | 如果为 true,将双星号 glob 字符视为单星号 glob 字符。 此选项直接传递给 anymatch。 |
noext | boolean | false | 如果为 true,避免匹配 extglob 模式 - 例如 +(ab) 。此选项直接传递给 anymatch。 |
nocase | boolean | false | 如果为 true,执行不区分大小写的匹配。 注意: 在不区分大小写的文件系统上,非魔术模式默认会匹配。 此选项直接传递给 anymatch。 |
matchBase | boolean | false | 如果为 true 且 globs 不包含任何 / 字符,则遍历所有目录并匹配该 glob - 例如 *.js 将被视为等同于 **/*.js 。此选项直接传递给 anymatch。 |
ignore | string 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: '.' }));