Gulp src()

🌙
手机阅读
本文目录结构

src()

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

**注:**BOMs(字节顺序标记)在 UTF-8 中没有任何作用,除非使用 removeBOM 选项禁用,否则 src() 将从读取的 UTF-8 文件中删除 BOMs。

基本用法

const { src, dest } = require('gulp');
function copy() {
  return src('input/*.js')
    .pipe(dest('output/'));
}

exports.copy = copy;

函数原型

src(globs, [options])

参数

参数 类型 描述
globs string / array 在系统上的想要处理的文件
options object 在下面的选项中详细说明。

返回值

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

可能出现的错误

  • “File not found with singular 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 属性。详情请参见 glob-base
此选项直接传递给 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: '.' }));

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了