天天看點

Gulp .src() 比對模式詳解文法:gulp.src(globs[, options])比對模式

  • 文法:gulp.src(globs[, options])
  • 比對模式
    • 單比對模式
    • 多比對模式(同時使用多種比對)
      • 1. 類正則
      • 2. 數組
      • 3. 展開模式

文法:

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.js

a/b.js

a/b/c.js

比對所有目錄下的

.js

檔案

az

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