nodejs之glob與globby


glob

glob允許使用規則,從而獲取對應規則匹配的文件。這個glob工具基於javascript.它使用了 minimatch 庫來進行匹配

安裝
npm install glob
引入
const glob = require('glob')
使用

glob方法可以傳入三個參數:

1、需要進行匹配的文件的路徑(有點類似於正則表達式)。
2、option可選項,也可以不填寫。
3、回調函數,回調函數內部可以返回兩個參數,一個是匹配成功后的結果會返回一個數組,如果沒有匹配上不會報錯會返回一個空數組,一個是失敗后的結果。

示例
glob("**/*.js", options, function (er, files) {
  console.log(files)
})
常用匹配規則
    • :匹配單個路徑部分中的0個或多個字符。
  1. :如果在一個路徑的部分,他會匹配零個或多個目錄和子目錄中搜索匹配。
glob("./src/components/**/*.js", function (er, files) {
    console.log(files);
    return files
});
// [ './src/components/index/index.js',
//     './src/components/news/n.js',
//     './src/components/news/news.js' ]
  1. ?:匹配路徑中某部分1個字符
glob("./src/components/**/?.js", function (er, files) {
    console.log(files);
    return files
});
//[ './src/components/news/n.js' ]
  1. !(模式1|模式2|模式3):匹配與所提供的任何模式不匹配的任何內容。和正則表達式的!一樣
    案例中的意思是不要n.js 不要index.js,所以就只剩下new.js了
glob("./src/components/**/!(n|index).js", function (er, files) {
    console.log(files)
})
// [ './src/components/news/news.js' ] 

  1. [...] :匹配一個字符的范圍,類似於一個正則表達式的范圍。如果范圍的第一個字符是!或者,它匹配任何不在范圍內的字符

  2. ?(模式1|模式2|模式3):匹配所提供的模式的零或一個事件

  3. +(模式1|模式2|模式3):匹配所提供的模式的一個或多個事件。

  4. *(a|b|c) :匹配所提供的模式的零個或多個事件。

  5. @(pattern|pat*|pat?erN):匹配所提供的模式之一。

使用同步語法

在上述案例中使用的都是異步請求,調用回調得到結果,其實glob也提供了同步返回結果的API ,在這里我只列舉一個

let pattern = './src/components/**/@(index|n|news).js';
console.log(glob.sync(pattern));
// [ './src/components/index/index.js',
//     './src/components/news/n.js',
//     './src/components/news/news.js' ]

globby

globby,是基於 glob,並進一步得到了增強

增強特性
  1. Promise 接口
  2. 多模式匹配
  3. 否定模式匹配
  4. 擴展目錄: dir → dir/**/*
  5. 支持 .gitignore
(async () => {
  const paths = await globby(['images','photos'],{
    expandDirectories: true
  });
  console.log(paths);
})();
不想寫了,自己查官方文檔去


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM