1. 程式人生 > >Gulp .src() 匹配模式詳解

Gulp .src() 匹配模式詳解

語法:gulp.src(globs[, options])

  • globs:檔案匹配模式(類似正則表示式),用來匹配檔案路徑(包括檔名)
  • options:為可選引數。通常情況下我們不需要用到
gulp.src('**/*.js')

匹配模式

Gulp 內部使用了 node-glob 模組來實現其檔案匹配功能

單匹配模式

匹配符 code 匹配 不匹配 備註
* * a.bx.yabcabc/ a/b.js
不匹配/,除非/出現在末尾
*.* a.bx.y abc 匹配所有帶字尾的檔案
*/*/*.js a/b/c.jsx/y/z.js a/b.jsa/b/c/d.js 匹配固定層級目錄
** ** abca/ba/b.jsa/b/ca/b/c.js 匹配所有的目錄和檔案
**/*.js a.js
a/b.jsa/b/c.js
匹配所有目錄下的 .js 檔案
a/**/z a/za/b/za/b/c/za/b/c/d/z
a/**b/z a/b/za/nb/z a/c/nb/z ** 單獨出現才能匹配多級目錄
? ?.js a.jsb.jsc.js 佔位符匹配,不匹配 /
a??
a.babc ab/ 佔位符與字元搭配使用
[] [abc].js a.jsb.jsc.js ab.jsxyz.js 整個 [] 只匹配一個字元
[^abc].js
[!abc].js
x.jsy.js a.jsb.jsc.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 展開為:abcacd
2. a{b,}c 展開為:abcac
3. a{0..3}c 展開為:a0ca1ca2c
4. a{b, c{d, e}f}g 展開為:abgacdfgacefg
5. a{b, c}d{e, f}g 展開為:abdegacdegabdegabdfg