摘要:參考資料下文是關(guān)于的方法的第一個參數(shù)的學(xué)習(xí)。因此,會展開為和。獲取目錄下所有文件名長度為字符的文件。匹配該路徑段中在指定范圍內(nèi)的一個字符。匹配完全且精確地匹配,且不可組合不符合任何模型之一的字符??赏ㄟ^在設(shè)置,讓將視為普通字符。
參考資料:https://github.com/isaacs/nod...
下文是關(guān)于 Gulp 的 gulp.src(globs[, options]) 方法的第一個參數(shù) globs 的學(xué)習(xí)。
需要注意的是:
當(dāng)該參數(shù) globs 為數(shù)組時,其包含的多個 glob 會按順序進行解析,這意味著以下意圖是可以實現(xiàn)的:
// 排除所有以字母 b 開頭的 js 文件,但不排除 bad.js gulp.src(["*.js", "!b*.js", "bad.js"])Glob
使用 shell 里的 patterns 匹配文件,如 * 等。
用法 用 npm 安裝 globnpm i glob
編寫js代碼:
var glob = require("glob"); // options 是可選參數(shù) glob("**/*.js", options, function (er, files) { // files 參數(shù)是一個文件名數(shù)組。 // 若參數(shù) options 的 `nonull` 屬性為 true,則在匹配不到文件時, files 參數(shù)則為 ["**/*.js"]。 //( 若 `nonull` 為 false 時, files 為空數(shù)組)。 // er 是一個 error 對象或 null。 })Glob 初級
"Globs" 是你通過在命令行輸入字符后完成某些操作時的 pattern。如 ls *.js,或?qū)?build/* 放在 .gitignore。
在解析路徑段的 patterns 前,braced sections 會展開為一個集合。braced sections 以 { 開頭,} 為結(jié)尾,中間部分以英文逗號 , 分隔。braced sections 可以含有斜杠符號 /。因此,a{/b/c,bcd} 會展開為 a/b/c 和 abcd。
以下字符用在路徑段時,會擁有特別的含義:
* : 匹配0或多個字符。
glob("js/*.js", function(err, files){ console.log(files); });
獲取js目錄下的所有js文件(不包括以.開頭的文件,下文有方法解決:對 glob 方法的 options 參數(shù)的屬性 dot:true)。
? : 匹配一個字符(不能為空)。
glob("js/a?.js", function(err, files){ console.log(files); }
獲取js目錄下所有文件名長度為2字符的js文件。例如:能匹配 js/ab.js,不能匹配 js/a.js。
[...] : 匹配該路徑段中在指定范圍內(nèi)的一個字符。
注意:不能組合,只能匹配其中一個字符。另外,如果指定范圍的首字符是 ! 或 ^,則匹配不在指定范圍內(nèi)的一個字符。
glob("js/a[0-3].js", function(err, files){ console.log(files); })
獲取js目錄下以a開頭,第二個字符為0-3之間(包括0和3)的js文件。若改為 ["js/[^ab].js"],則匹配 js/c.js,不匹配 js/cd.js、js/ac.js。
!(pattern|pattern|pattern) : 匹配(完全且精確地匹配,且不可組合)不符合任何模型之一的字符。注意 | 前后不能有空格,下同。
glob("js/!(a|b).js", function(err, files){ console.log(files); });
匹配 js 目錄下的 aa.js、ab.js、ba.js、c.js 不匹配 a.js、b.js。
?(pattern|pattern|pattern):匹配多個 pattern 中 0 或 1 個(精確匹配,不可以組合)。
glob("js/?(a|b).js", function(err, files){ console.log(files); });
匹配 js 目錄下的 a.js、b.js,不匹配 ab.js
+(pattern|pattern|pattern) : 至少匹配多個 pattern 中的一個。與*(pattern|pattern|pattern) 不用的是,它必須1個及以上,不能為空。
glob("js/+(a|b)b.js", function(err, files){ console.log(files); });
匹配 js 目錄下的 ab.js、bb.js、ababab.js,不能匹配 abcd.js(也就是說:只允許匹配出現(xiàn)在范圍內(nèi)的字符) ,也不能像 js/*(a|b)b.js 那樣匹配 b.js。
*(a|b|c) : 匹配括號中多個 pattern 中0或任意多個(pattern可相互組合)。
glob("js/*(a|b|c).js", function(err, files){ console.log(files); });
匹配 js 目錄下的 a.js、ab.js、abc.js、ba.js,不匹配 abcd.js(也就是說:只允許匹配出現(xiàn)在范圍內(nèi)的字符)。
@(pattern|pattern|pattern) 匹配多個 pattern 中的任意一個(即不可以組合,且不能為空或大于1個)。與 ?(pattern|pattern|pattern) 區(qū)別是不可為空。
glob("js/@(a|b)b.js", function(err, files){ console.log(files); });
匹配 js 目錄下的 ab.js、bb.js,不匹配 b.js、abb.js、abc.js。
** 與 * 類似,可以匹配任何內(nèi)容(可匹配空),但 ** 不僅能匹配路徑中的特定一段,還能匹配后代所有目錄(即多段路徑段)。
glob("js/**/*.js", function(err, files){ console.log(files); });
匹配 js 目錄下所有js文件,如 js/a.js 或 js/a/b/c/d.js。
Dots(即 .)如果文件或目錄的某路徑段以 . 作為首字符,那么該路徑段不會符合任何 glob pattern,除非該 pattern 的相應(yīng)路徑段同樣以 . 作為首字符。
例如,pattern a/.*/c 會匹配文件 a/.b/c,而 pattern a/*/c 則不會匹配該文件,因為 * 不會匹配以 . 字符開頭的文件。
可通過在 options 設(shè)置 dot: true,讓 glob 將 . 視為普通字符。
Basename 匹配如果在 options 設(shè)置 matchBase: true,且 pattern 不含有 /,那么將會尋找任何匹配 basename 的文件,即在當(dāng)前路徑下的文件樹進行搜索。例如,*.js 會匹配 test/simple.basic.js。
空集如果不匹配任何文件,則會返回空數(shù)組。這點與 shell 不同,shell 會返回自身 pattern。
$echo echo a*s*d*f a*s*d*f
若想得到 bash 那樣的行為,可對 options 參數(shù)設(shè)置 nonull:true。
若發(fā)現(xiàn)文中有任何錯誤,或有任何好的建議,歡迎評論。
GitHub:關(guān)于 Glob (gulp) 的學(xué)習(xí)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78748.html
摘要:在項目配置中的探索持續(xù)更新中后臺配置一項目需求請認(rèn)真看目錄結(jié)構(gòu)項目構(gòu)建很大都基于目錄來的線上用戶訪問的目錄線上資源文件目錄前端開發(fā)目錄一個業(yè)務(wù)需求模塊每個業(yè)務(wù)需求模塊下會有很多頁面 WebPack在項目配置中的探索(持續(xù)更新中) webpack + gulp + vue (thinkPHP后臺配置) 一、項目需求(請認(rèn)真看目錄結(jié)構(gòu),項目構(gòu)建很大都基于目錄來的) --- Applicat...
摘要:簡單做點通俗的講解。如果你想要創(chuàng)建一個序列化的隊列,并以特定的順序執(zhí)行,嗯,戳文檔文檔。自然是表示任意,全部。到這里,其實就是一個小規(guī)模的調(diào)試環(huán)境,接下來,讓我們升級一下,開始構(gòu)造簡單的發(fā)布環(huán)境壓縮采用的是插件。做一個的就好,只需要。 gulp作為一個自動化構(gòu)建工具,在前端開發(fā)中大大的提高了開發(fā)效率,前端開發(fā)者們可以利用他減少許多繁復(fù)無腦的操作。這里簡單構(gòu)建一個小環(huán)境,就可以在以后的學(xué)...
摘要:是一款流式構(gòu)建系統(tǒng),如果說是基于任務(wù)執(zhí)行器,就是基于的文件流任務(wù)執(zhí)行器,比起有如下特點使用方便通過代碼優(yōu)于配置的策略,可以讓簡單的任務(wù)簡單,復(fù)雜的任務(wù)更可管理。 作者:Jogis原文鏈接:https://github.com/yesvods/Blog/issues/1轉(zhuǎn)載請注明原文鏈接以及作者信息 showImg(http://itanguo.cn/wp-content/uploads...
摘要:流式構(gòu)建改變了底層的流程控制,大大提高了構(gòu)建工作的效率和性能,給用戶的直觀感覺就是更快。我的看法關(guān)于流式構(gòu)建,短短幾句話無法講清它的來龍去脈,但是在的世界里,確實是至關(guān)重要的。 Grunt 一直是前端領(lǐng)域構(gòu)建工具(任務(wù)運行器或許更準(zhǔn)確一些,因為前端構(gòu)建只是此類工具的一部分用途)的王者,然而它也不是毫無缺陷的,近期風(fēng)頭正勁的 gulp.js 隱隱有取而代之的態(tài)勢。那么,究竟是什么使得 g...
閱讀 2692·2023-04-25 19:13
閱讀 4010·2021-09-22 15:34
閱讀 3053·2019-08-30 14:23
閱讀 1462·2019-08-29 17:17
閱讀 1603·2019-08-29 16:05
閱讀 1537·2019-08-29 13:26
閱讀 1218·2019-08-29 13:19
閱讀 553·2019-08-29 13:16