glob 在webpack中的使用。

2024-05-09 11:48
文章标签 使用 webpack glob

本文主要是介绍glob 在webpack中的使用。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

glob 在webpack中对文件的路径处理非常之方便,比如当搭建多页面应用时就可以使用glob对页面需要打包文件的路径进行很好的处理。

官方文档地址 : https://www.npmjs.com/package/glob 

我没有找到中文文档地址。经过一段时间的学习,本着互联网分享精神。我现将我学习思路以及想法记录如下,分享给大家,希望对大家有所帮助。

本文章 全部案例源码:http://pan.baidu.com/s/1b9QB6I

安装

npm install glob -save-dev  

目录结构

 

使用

  在webpac.config.js中引入glob

 var glob = require("glob")

   glob方法可以传入三个参数。

  1、需要进行匹配的文件的路径(有点类似于正则表达式,但是比那个要简单的多。)。

  2、option可选项,也可以不填写。

  3、回调函数,回调函数内部可以返回两个参数,一个是匹配成功后的结果会返回一个数组,如果没有匹配上不会报错会返回一个空数组,一个是失败后的结果。

  示例代码

glob("**/*.js", options, function (er, files) {console.log(files)
})

   下列字符在路径部分使用时具有特殊的特殊意义

  1、* :匹配单个路径部分中的0个或多个字符。

  2、?:匹配路径中某部分1个字符。

  3、[...] :匹配一个字符的范围,类似于一个正则表达式的范围。如果范围的第一个字符是!或者,它匹配任何不在范围内的字符。

  4、!(模式1|模式2|模式3):匹配与所提供的任何模式不匹配的任何内容。和正则表达式的!一样。

  5、?(模式1|模式2|模式3):匹配所提供的模式的零或一个事件。

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

    7、*(a|b|c) :匹配所提供的模式的零个或多个事件。

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

  9、**:如果**在一个路径的部分,他会匹配零个或多个目录和子目录中搜索匹配。

   *和**的使用方法

  注意这里也用到了**,这段匹配模式代表的是src/components/**(下所以的文件夹)/*.js(文件名包含.js的文件路径)

复制代码

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' ]

复制代码

   ?的使用方法

   注意?匹配的是一个任意字符。

glob("./src/components/**/?.js", function (er, files) {console.log(files);return files
});
//[ './src/components/news/n.js' ]

  当然也可以写多个?

glob("./src/components/**/????.js", function (er, files) {console.log(files);return files
});
// [ './src/components/news/news.js' ]

  [...]的使用方法

  [...]内可以写入需要匹配的组合字符例如:案例中会匹配 indea.js,indeb.js.....indez.js,当然也可单独制定,例如"./src/components/**/inde[x,k].js"

glob("./src/components/**/inde[a-z].js", function (er, files) {console.log(files)
})
//[ './src/components/index/index.js' ]

 

  !()的使用方法,理解为反的意思,其实这个没什么说的, 稍微懂点js的都会。和运算表达式中的!一样。

  案例中的意思是不要n.js 不要index.js,所以就只剩下new.js了。

glob("./src/components/**/!(n|index).js", function (er, files) {console.log(files)
})
// [ './src/components/news/news.js' ] 

   ?()的使用方法

复制代码

glob("./src/components/**/?(news|index|n).js", function (er, files) {console.log(files)
});
// [ './src/components/index/index.js',
//     './src/components/news/n.js',
//     './src/components/news/news.js' ]

复制代码

 

   +()的使用方法

  本案例中会匹配in.js,news.js,dex.js,innews.js,index.js,newsdex.js 他会先匹配自身是否会匹配上,然后在和其他模式组合在进行匹配。

glob("./src/components/**/+(in|news|dex).js", function (er, files) {console.log(files)
});
// [ './src/components/index/index.js',
//     './src/components/news/news.js' ]

 

  @()的使用方法

  他会完整匹配备选模式中的其中一个,只要有一个模式匹配上就会被匹配

复制代码

glob("./src/components/**/@(index|n|news).js", function (er, files) {console.log(files)
});
// [ './src/components/index/index.js',
//     './src/components/news/n.js',
//     './src/components/news/news.js' ]

复制代码

 使用同步语法实现以上案例

在上述案例中使用的都是异步请求,调用回调得到结果,其实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' ]

 

这篇关于glob 在webpack中的使用。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973335

相关文章

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Springboot3 ResponseEntity 完全使用案例

《Springboot3ResponseEntity完全使用案例》ResponseEntity是SpringBoot中控制HTTP响应的核心工具——它能让你精准定义响应状态码、响应头、响应体,相比... 目录Spring Boot 3 ResponseEntity 完全使用教程前置准备1. 项目基础依赖(M

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

C# 预处理指令(# 指令)的具体使用

《C#预处理指令(#指令)的具体使用》本文主要介绍了C#预处理指令(#指令)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1、预处理指令的本质2、条件编译指令2.1 #define 和 #undef2.2 #if, #el

C#中Trace.Assert的使用小结

《C#中Trace.Assert的使用小结》Trace.Assert是.NET中的运行时断言检查工具,用于验证代码中的关键条件,下面就来详细的介绍一下Trace.Assert的使用,具有一定的参考价值... 目录1、 什么是 Trace.Assert?1.1 最简单的比喻1.2 基本语法2、⚡ 工作原理3