gulp.src()
gulp.src()介绍
创建一个流,用于从文件系统读取 Vinyl 对象。
注:BOMs(字节顺序标记)在 UTF-8 中没有任何作用,除非使用 removeBOM
选项禁用,否则 src()
将从读取的 UTF-8 文件中删除BOMs。
gulp.src()用法
const { src, dest } = require('gulp'); function copy() {
return src('input/*.js')
.pipe(dest('output/')); } exports.copy = copy;
gulp.src()函数原型
src(globs, [options])
参数
参数 | 类型 | 描述 |
---|---|---|
globs | string
array |
Globs to watch on the file system. |
options | object | 在下面的选项中详细说明。 |
返回值
返回一个可以在管道的开始或中间使用的流,用于根据给定的 globs 添加文件。
可能出现的错误
当 globs
参数只能匹配一个文件(如 foo/bar.js
)而且没有找到匹配时,会抛出一个错误,提示 "File not found with singular glob"。若要抑制此错误,请将 allowEmpty
选项设置为 true
。
当在 globs
中给出一个无效的 glob 时,抛出一个错误,并显示 "Invalid glob argument"。
选项
对于接受函数的选项,传递的函数将与每个 Vinyl 对象一起调用,并且必须返回另一个列出类型的值。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 时,递归地解析链接到目标的符号(symbolic)链接。如果为 false,则保留符号链接并将 Vinyl 对象的 symlink 属性设置为原始文件的路径。 |
cwd | string | process.cwd()
|
将与任何相对路径相结合以形成绝对路径的目录。对于绝对路径忽略。用于避免将 globs 与 path.join() 相结合。
此选项直接传递给 glob-stream。 |
base | string | 显式地在创建的 Vinyl 对象上设置 base 属性。详情请参见 API Concepts.
此选项直接传递给 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-stream。 |
uniqueBy | string
function |
'path'
|
通过比较字符串属性名或函数的结果,从流中删除重复项。
注意:当使用函数时,函数接收流数据(对象包含 cwd 、base 、path 属性)。 |
dot | boolean | false | 如果为 true,请将 globs 与 .gitignore 等点文件进行比较。
此选项直接传递给 node-glob。 |
silent | boolean | true | 如果为 true,则禁止在 stderr 上打印警告。
注意: 此选项直接传递给 node-glob,但默认为 true 而不是 false 。 |
mark | boolean | false | 如果为 true,将向目录匹配项追加一个 / 字符。通常不需要,因为路径是在管道中规范化的
此选项直接传递给 node-glob。 |
nosort | boolean | false | 如果为 true,禁用对 glob 结果排序。
此选项直接传递给 node-glob。 |
stat | boolean | false | 如果为 true, fs.stat() 在所有的结果上被调用。这增加了额外的开销,通常不应该使用。
此选项直接传递给 node-glob。 |
strict | boolean | false | 如果为 true,如果在尝试读取目录时遇到意外问题,将抛出错误。
此选项直接传递给 node-glob。 |
nounique | boolean | false | 当为 false 时,可以防止结果集中出现重复的文件。
此选项直接传递给 node-glob。 |
debug | boolean | false | 如果为 true,调试信息将被记录到命令行。
此选项直接传递给 node-glob。 |
nobrace | boolean | false | 如果为 true,避免扩大大括号集合 - 例如 {a,b} 或 {1..3} .
此选项直接传递给 node-glob。 |
noglobstar | boolean | false | 如果为 true,将双星(** ) glob 字符视为单星(* ) glob 字符
此选项直接传递给 node-glob。 |
noext | boolean | false | 如果为 true,避免匹配 extglob 模式 - 例如 +(ab) .
此选项直接传递给 node-glob。 |
nocase | boolean | false | 如果为 true,则执行不区分大小写的匹配。
注意: 在不区分大小写的文件系统上,默认情况下,non-magic 模式将被匹配。 此选项直接传递给 node-glob。 |
matchBase | boolean | false | 如果true 并且 globs 不包含任何 / 字符,遍历所有目录并匹配该 glob —— *.js 将被视为等同于 **/*.js 。
此选项直接传递给 node-glob。 |
nodir | boolean | false | 若要仅匹配目录,glob 请以 / 结束。
此选项直接传递给 node-glob。 |
ignore | string
array |
从匹配中排除。这个选项与否定的(negated) globs 组合在一起。
注意: 无论其他设置如何,这些 globs 总是与点文件匹配。
此选项直接传递给 node-glob。 |
|
follow | boolean | false | 如果为 true,在展开 ** globs 时将遍历符号链接目录。
注意: 这可能导致循环链接出现问题。 此选项直接传递给 node-glob。 |
realpath | boolean | false | 如果为 true,fs.realpath() 在所有的结果上调用。这可能导致悬挂式(dangling)链接。
此选项直接传递给 node-glob。 |
cache | object | 之前生成的缓存对象——避免了一些文件系统调用。
此选项直接传递给 node-glob。 |
|
statCache | object | 之前生成的 fs.Stat 缓存——避免了一些文件系统调用。
此选项直接传递给 node-glob。 |
|
symlinks | object | 之前生成的符号链接缓存——避免了一些文件系统调用。
此选项直接传递给 node-glob。 |
|
nocomment | boolean | false | 当为 false 时,将 glob 开头的 # 字符视为注释。
此选项直接传递给 node-glob。 |
资源映射
资源映射支持直接构建到 src()
和 dest()
中,但是默认情况下是禁用的。使其能够生成内联或外部资源映射。
内联资源映射:
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: '.' }));