Gulp globs匹配規則

本節咱們來學習 Gulp 中的 globs 的匹配規則。glob 是由普通字符或通配字符組成的字符串,用於匹配文件路徑。咱們能夠使用一個或多個 glob 匹配規則在文件系統中定位文件。css

gulp.src()方法

src() 方法須要一個 glob 字符串或一個 glob 字符串組成的數組來做爲參數,肯定哪些文件須要被操做。html

gulp.src(globs[, options])
  • globs:文件匹配模式,相似於正則表達式,用來匹配文件路徑。
  • options:可選參數,一般狀況不須要用到。
示例:
gulp.src('./js/*.js')                        // * 匹配js文件夾下全部.js格式的文件
gulp.src('./js/**/*.js')                     // ** 匹配js文件夾的0個或多個子文件夾
gulp.src(['./js/*.js','!./js/index.js'])     // ! 匹配除了index.js以外的全部js文件
gulp.src('./js/**/{omui,common}.js')         // {} 匹配{}裏的文件名

匹配模式

gulp 內部使用了 node-glob 模塊來實現其文件匹配功能。咱們能夠使用下面這些特殊的字符來匹配咱們想要的文件。node

單匹配模式:正則表達式

匹配符 描述
* 匹配文件路徑中的 0 個或多個字符,但不會匹配路徑分隔符,除非路徑分隔符出如今末尾
** 匹配路徑中的 0 個或多個目錄及其子目錄
匹配方括號中出現的字符中的任意一個
[...] 匹配方括號中出現的字符中的任意一個

多匹配模式,同時使用多種匹配:gulp

表達式 描述
!(pattern\ pattern\ pattern) 匹配任何與括號中給定的任一模式都不匹配的
?(pattern\ pattern\ pattern) 匹配括號中給定的任一模式0次或1次
+(pattern\ pattern\ pattern) 匹配括號中給定的任一模式至少1次
*(pattern\ pattern\ pattern) 匹配括號中給定的任一模式0次或屢次
@(pattern\ pattern\ pattern) 匹配括號中給定的任一模式1次

數組

若是有多種匹配模式時,咱們能夠在 src() 方法中使用數組。數組

  • 使用數組的方式來匹配多種文件,例以下面代碼匹配 jscsshtml 三種文件:
gulp.src(['js/*.js', 'css/*.css', '*.html'])
  • 使用數組的方式還有一個好處就是能夠很方便的使用排除模式,在數組中的單個匹配模式前加上 ! 符號便是排除模式,,它會在匹配的結果中排除這個匹配,要注意一點的是不能在數組中的第一個元素中使用排除模式
gulp.src([*.js,'!b*.js']) // 匹配全部js文件,但排除掉以b開頭的js文件
gulp.src(['!b*.js',*.js]) // 不排除任何文件,由於排除模式不能出如今數組的第一個元素中

此外,還能夠使用展開模式。展開模式以花括號 {} 做爲定界符,根據它裏面的內容,會展開爲多個模式,最後匹配的結果爲全部展開的模式相加起來獲得的結果。學習

展開的例子以下:ui

  • a{b,c}d: 會展開爲 abdacd
  • a{b,}c:會展開爲 abcac
  • a{0..3}d:會展開爲 a0da1da2da3d
  • a{b,c{d,e}f}g:會展開爲 abgacdfgacefg
  • a{b,c}d{e,f}g:會展開爲 abdegacdegabdegabdfg

字符串片斷與分隔符

字符串片斷是指兩個分隔符之間的全部字符組成的字符串,在 globs 中,分隔符永遠是 / 字符,不區分操做系統,即便是在採用 \\ 做爲分隔符的 Windows 操做系統中也是如此。在 globs 中,\\ 字符被保留做爲轉義字符使用。操作系統

示例:

若是 * 符號被轉義,那麼 * 將被做爲一個普通字符使用,而再也不是通配符:3d

'glob_with_uncommon_\\*_character.js'

避免使用 Nodepath 類方法來建立 globs,例如 path.join

Windows 中,因爲 Node 使用 \\ 字符做爲路徑分隔符,所以將會產生一個無效的 globs。還要避免使用 __dirname__filename 全局變量,因爲一樣的緣由,process.cwd() 方法也要避免使用。

const invalidGlob = path.join(__dirname, 'src/*.js');
相關文章
相關標籤/搜索