• 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);
    })();
    
    不想写了,自己查官方文档去
  • 相关阅读:
    Centos7上安装docker
    centos如何查看某一目录下每个目录或文件占用磁盘空间大小
    大学毕设参考文献在什么网站搜索
    Spring MVC使用jstl 标签c:forEach 遍历输出双层嵌套List的数据
    JQuery选择器通过click事件获取当前点击对象的id,name,value属性
    利用ajax和servlet实现前后端数据交互(json)
    Java软件工程的弹幕调试原则
    周周总结——时时更新(第4学期,第8周)
    团队软件的NABCD——星遇
    周周总结——时时更新(第4学期,第7周)
  • 原文地址:https://www.cnblogs.com/raind/p/10211951.html
Copyright © 2020-2023  润新知