语法:gulp.src(globs[, options])
globs
:文件匹配模式(类似正则表达式),用来匹配文件路径(包括文件名)options
:为可选参数。通常情况下我们不需要用到
gulp.src('**/*.js')
匹配模式
Gulp 内部使用了 node-glob 模块来实现其文件匹配功能
单匹配模式
匹配符 | code | 匹配 | 不匹配 | 备注 |
* |
* |
a.b , x.y , abc , abc/ |
a/b.js |
不匹配/ ,除非/ 出现在末尾 |
*.* |
a.b , x.y |
abc |
匹配所有带后缀的文件 | |
*/*/*.js |
a/b/c.js , x/y/z.js |
a/b.js , a/b/c/d.js |
匹配固定层级目录 | |
** |
** |
abc , a/b , a/b.js , a/b/c , a/b/c.js |
匹配所有的目录和文件 | |
**/*.js |
a.js , a/b.js , a/b/c.js |
匹配所有目录下的 .js 文件 |
||
a/**/z |
a/z , a/b/z , a/b/c/z , a/b/c/d/z |
|||
a/**b/z |
a/b/z , a/nb/z |
a/c/nb/z ,
|
** 单独出现才能匹配多级目录 |
|
? |
?.js |
a.js , b.js , c.js |
占位符匹配,不匹配 / |
|
a?? |
a.b , abc |
ab/ |
占位符与字符搭配使用 | |
[] |
[abc].js |
a.js , b.js , c.js |
ab.js , xyz.js |
整个 [] 只匹配一个字符 |
[^abc].js [!abc].js |
x.js , y.js |
a.js , b.js , c.js |
排除匹配字符 |
多匹配模式(同时使用多种匹配)
1. 类正则
表达式 | 备注 |
---|---|
!(pattern|pattern|pattern) |
匹配任何与括号中给定的任一模式都不匹配的 |
?(pattern|pattern|pattern) |
匹配括号中给定的任一模式0次或1次,类似于js正则中的 (pattern|pattern|pattern)? |
+(pattern|pattern|pattern) |
匹配括号中给定的任一模式至少1次,类似于js正则中的 (pattern|pattern|pattern)+ |
*(pattern|pattern|pattern) |
匹配括号中给定的任一模式0次或多次,类似于js正则中的 (pattern|pattern|pattern)* |
@(pattern|pattern|pattern) |
匹配括号中给定的任一模式1次,类似于js正则中的 (pattern|pattern|pattern) |
2. 数组
- 使用数组匹配多种模式
gulp.src(['js/*.js', 'css/*.css', '*.html'])
- 使用数组 + 排除模式
排除模式不能出现在数组的第一个元素中
gulp.src([*.js,'!b*.js']) // 匹配所有js文件,但排除掉以b开头的js文件
gulp.src(['!b*.js',*.js]) // 不排除任何文件,因为排除模式不能出现在数组的第一个元素中
3. 展开模式
以 {}
作为定界符,根据它里面的内容,会展开为多个模式,
最后匹配的结果为所有展开的模式相加起来得到的结果 !
1. a{b, c}d
展开为:abc
,acd
2. a{b,}c
展开为:abc
,ac
3. a{0..3}c
展开为:a0c
,a1c
,a2c
4. a{b, c{d, e}f}g
展开为:abg
,acdfg
,acefg
5. a{b, c}d{e, f}g
展开为:abdeg
,acdeg
,abdeg
,abdfg