3.gulp.src()
程序员文章站
2024-02-25 14:29:57
...
src(),创建一个流,用于从文件系统中读取Vinyl对象(Vinyl是描述文件的元数据对象,主要属性是文件系统中文件核心的 path 和 content 核心方面。Vinyl对象可用于描述来自多个源的文件)。
用法:
const { src,dest} = require("gulp");
function copy() {
return src('input/*.js')
.pipe(dest('output/'))
}
exports.copy = copy;
函数原型:
src(globs,[options]);
globs是文件匹配模式(类似正则表达式),用来匹配文件路径(包括文件名),当然这里也可以直接指定某个具体的文件路径。当有多个匹配模式时,该参数可以是一个数组。
options为可选参数,通常情况下我们不需要用到。
下面我们重点说说Gulp用到的glob的匹配规则以及一些文件匹配技巧。
例子,转换html文件:
//转换html文件
gulp.task('html', function(){
gulp.src('./src/*.html')
.pipe(connect.reload())
.pipe(gulp.dest('./dist'));//写入命令
});
当有多种匹配模式时,可以使用数组:
//使用数组的方式来匹配多种文件
gulp.src(['js/*.js','css/*.css','*.html'])
使用数组方式还有一个好处就是可以很方便的使用排除模式,在数组中的单个匹配模式前加上 ! 即是排除模式,它会在匹配的结果中排除掉这个匹配,要注意的一点是不能在数组中的第一项使用排除模式。
gulp.src([*.js,'!b*.js']) //匹配所有js文件,但排除掉以b开头的js文件
gulp.src(['!b*.js',*.js]) //不会排除任何文件,因为排除模式不能在数组中的第一项中使用
此外,还可以使用展开模式。展开模式是用 {} 作为定界符,根据它里面的内容,会展开为多个模式,最后匹配的结果为所有展开的模式相加起来得到的结果。展开的例子如下:
- a{b,c}d展开为 abd,acd
- a{b,}c展开的结果为 abc,ac
- a{0…3}d展开的结果为a01,a02,a03
- a{b,c{d,e}f}g 会展开为 abg,acdfg,acefg
- a{b,c}d{e,f}g 会展开为 abdeg,acdeg,abdeg,abdfg
推荐阅读