gulp.src()

2020-09-30 18:05 更新

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,cwdbase 选项应该对应起来。
此选项直接传递给 glob-stream。
root string 解析 globs 的根路径.
此选项直接传递给 glob-stream。
allowEmpty boolean false 当为 false 时,只能匹配一个文件的 globs (如 foo/bar.js)如果没有找到匹配的文件,就会引发一个错误。如果为 true 的,则不会报错。
此选项直接传递给 glob-stream。
uniqueBy string
function
'path' 通过比较字符串属性名或函数的结果,从流中删除重复项。
注意:当使用函数时,函数接收流数据(对象包含 cwdbasepath 属性)。
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: '.' }));


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号