路径模式匹配glob -- nodejs常用模块(7)

时间:2022-09-01 23:22:04

模块介绍

  • glob模式是指 shell 所使用的简化了的正则表达式。
  • 这里的nodejs的glob模块是,glob模式的javascript实现版本。
  • 每种语言的glob模式会有细小的区别,如js实现的glob模式中支持了**。可以参考这里的文档:https://github.com/isaacs/minimatch
  • 这里的glob模块的功能:返回匹配指定模式的文件名或目录。

帮助文档
http://www.gruntjs.org/article/configuring_tasks.html
https://github.com/isaacs/minimatch
https://github.com/isaacs/node-glob

demo
1.glob的demo

/** * 检索某个目录下,符合这些正则表达式的文件列表 */ var pattern2fileList = function(src, patternList, callback) { var pattern = '{'+patternList.join(',')+'}'; var glob = require("glob"); glob(pattern, {cwd:src, mark:true}, callback); } //demo var patternList = ['node-glob/**/*.{js,json}','*.js', 'node-glob']; //{,}中逗号后面不能有空格 var src = '../source'; pattern2fileList(src, patternList, function (err, fileList) { if(err) { console.log(err); return ; } console.log(fileList); }); 

2.minimatch的demo

var minimatch =require('minimatch'); //var result = minimatch('bb/a', '**a'); //false //var result = minimatch('bb/a', '**/a'); //true //var result = minimatch('bb/cc/bba', '**a'); //false var result = minimatch('bb/cc/bba', '**/*a'); //true console.log(result); 

这个东东就是个校验工具。


glob中的参数说明

第一个参数
一个glob模式的式子

第二个参数options常用属性

  • cwd The current working directory in which to search. Defaults to process.cwd().
  • mark Add a / character to directory matches. Note that this requires additional stat calls. default false
  • nocase Perform a case-insensitive match. Note that case-insensitive filesystems will sometimes result in glob returning results that are case-insensitively matched anyway, since readdir and stat will not raise an error.
  • debug Set to enable debug logging in minimatch and glob.


glob模式语法说明

基本语法介绍

  • * 匹配任意数量的字符,但不匹配/
  • ? 匹配单个字符,但不匹配/
  • ** 匹配任意数量的字符,包括/,只要它是路径中唯一的一部分
  • {} 允许使用一个逗号分割的列表或者表达式
  • ! 在模式的开头用于否定一个匹配模式(即排除与模式匹配的信息)
    ps:这里只是列了js版本的glob模式的一些常用语法。

特殊语法**
看了官方文档也没看明白,写了些demo测试了下(如上minimatch的demo),觉得**匹配的内容为路径的父目录或者为空时才会生效。