Gulp .src() 匹配模式詳解
阿新 • • 發佈:2019-02-06
語法:gulp.src(globs[, options])
globs
:檔案匹配模式(類似正則表示式),用來匹配檔案路徑(包括檔名)options
:為可選引數。通常情況下我們不需要用到
gulp.src('**/*.js')
- 1
匹配模式
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'])
- 1
- 使用陣列 + 排除模式
排除模式不能出現在陣列的第一個元素中
gulp.src([*.js,'!b*.js']) // 匹配所有js檔案,但排除掉以b開頭的js檔案
gulp.src(['!b*.js',*.js]) // 不排除任何檔案,因為排除模式不能出現在陣列的第一個元素中
- 1
- 2
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
--------------------- 本文來自 凝弧 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/wildye/article/details/80516847?utm_source=copy