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使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

MyBatis ParameterHandler的具体使用

《MyBatisParameterHandler的具体使用》本文主要介绍了MyBatisParameterHandler的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、概述二、源码1 关键属性2.setParameters3.TypeHandler1.TypeHa

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完