node?NPM庫(kù)glob通配符匹配文件名minimatch模式匹配字符串學(xué)習(xí)
NPM酷庫(kù)
每天兩分鐘,了解一個(gè)流行NPM庫(kù)。
經(jīng)常,我們的程序需要對(duì)磁盤文件進(jìn)行管理,就需要讀取磁盤上的文件列表,然后可能會(huì)需要判斷文件夾或文件名,還可能需要遞歸掃描子目錄。
glob
今天我們要了解的庫(kù) glob,就是專門用來(lái)掃描磁盤文件,并返回我們需要的文件類型。
const glob = require("glob") glob("**/*.js", function (error, files) { // files 就是我們得到的文件的列表 })
上述代碼中,我們會(huì)遞歸查找當(dāng)前目錄下的所有.js
文件,因?yàn)槲覀兪褂昧?nbsp;**/*.js
通配符做查找條件。
glob 支持的通配符模式
glob 支持強(qiáng)大的匹配規(guī)則,但是要注意glob的匹配規(guī)則并不是正則表達(dá)式,詳細(xì)支持如下:
*
匹配0到多個(gè)字符?
匹配一個(gè)字符[...]
匹配一個(gè)字符列表,類似正則表達(dá)式的字符列表!(pattern|pattern|pattern)
反向匹配括號(hào)內(nèi)的模式?(pattern|pattern|pattern)
匹配0或1個(gè)括號(hào)內(nèi)的模式+(pattern|pattern|pattern)
匹配至少1個(gè)括號(hào)內(nèi)的模式*(pattern|pattern|pattern)
匹配0到多個(gè)括號(hào)內(nèi)的模式@(pattern|pat*|pat?erN)
精確匹配括號(hào)內(nèi)的模式**
匹配0到多個(gè)子目錄,遞歸匹配子目錄
其他特性
除下上文中的異步接口,glob還支持 glob.sync()
同步接口,另外,glob
還支持大量的參數(shù)選項(xiàng),比如cwd
,root
等等,具體請(qǐng)參考官方文檔。
參考文檔
glob: https://github.com/isaacs/nod...
minimatch
glob 的基礎(chǔ)庫(kù): minimatch,用來(lái)模式匹配字符串的庫(kù)。
其實(shí),glob庫(kù)支持的的各種模式都來(lái)自于minimatch。
minimatch 的用法
const minimatch = require("minimatch") minimatch("bar.foo", "*.foo") // true minimatch("bar.foo", "*.bar") // false minimatch("bar.foo", "*.+(bar|foo)", { debug: true }) // true
minimatch 支持的通配符模式
要注意,minimatch的匹配模式并非是正則表達(dá)式,具體支持如下:
*
匹配0到多個(gè)字符?
匹配一個(gè)字符[...]
匹配一個(gè)字符列表,類似正則表達(dá)式的字符列表!(pattern|pattern|pattern)
反向匹配括號(hào)內(nèi)的模式?(pattern|pattern|pattern)
匹配0或1個(gè)括號(hào)內(nèi)的模式+(pattern|pattern|pattern)
匹配至少1個(gè)括號(hào)內(nèi)的模式*(pattern|pattern|pattern)
匹配0到多個(gè)括號(hào)內(nèi)的模式@(pattern|pat*|pat?erN)
精確匹配括號(hào)內(nèi)的模式**
匹配0到多個(gè)子目錄,遞歸匹配子目錄
參考資料
https://github.com/isaacs/nod...
https://github.com/isaacs/min...
https://en.wikipedia.org/wiki...
以上就是node NPM庫(kù)glob通配符匹配文件名minimatch模式匹配字符串學(xué)習(xí)的詳細(xì)內(nèi)容,更多關(guān)于node NPM庫(kù)glob minimatch的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
windows使用nvm對(duì)node進(jìn)行版本管理切換的完整步驟
這篇文章主要介紹了windows使用nvm對(duì)node進(jìn)行版本管理切換的完整步驟,在使用之前各位務(wù)必卸載掉自己安裝過(guò)的nvm或者node版本包括環(huán)境變量之類的,要保證自己的電腦完全沒(méi)有node環(huán)境,需要的朋友可以參考下2024-03-03nodejs個(gè)人博客開(kāi)發(fā)第五步 分配數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了nodejs個(gè)人博客開(kāi)發(fā)的分配數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04快速使用node.js進(jìn)行web開(kāi)發(fā)詳解
本篇文章主要介紹了快速使用node.js進(jìn)行web開(kāi)發(fā)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04搭建基于express框架運(yùn)行環(huán)境的方法步驟
Express提供了一個(gè)輕量級(jí)模塊,把Node.js的http模塊功能封裝在一個(gè)簡(jiǎn)單易用的接口中,這篇文章主要介紹了搭建基于express框架運(yùn)行環(huán)境的方法步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11使用NestJS開(kāi)發(fā)Node.js應(yīng)用的方法
這篇文章主要介紹了使用NestJS開(kāi)發(fā)Node.js應(yīng)用的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12npm?ERR!?Node.js?v20.11.0錯(cuò)誤的解決
在使用?npm?進(jìn)行包管理和構(gòu)建項(xiàng)目的過(guò)程中,有時(shí)會(huì)遇到錯(cuò)誤信息?npm?ERR!?Node.js?v20.11.0,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下2024-02-02Node.js學(xué)習(xí)之查詢字符串解析querystring詳解
這篇文章主要給大家介紹了關(guān)于Node.js查詢字符串解析querystring的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-09-09NodeJs讀取JSON文件格式化時(shí)的注意事項(xiàng)
本文是作者在進(jìn)行NodeJs開(kāi)發(fā)時(shí)偶然發(fā)現(xiàn)的問(wèn)題,經(jīng)過(guò)一番努力,最終找到解決方案,分享給大家,有需要的小伙伴可以參考下2016-09-09