模块使用记录学习——node-glob
来源:互联网 发布:虚拟拍照软件下载 编辑:程序博客网 时间:2024/06/15 11:39
一、node模块
1、node-glob
node的glob模块允许你使用*等符号,来写一个glob规则,像在shell里一样,获取匹配对应规则的文件。glob工具是基于JavaScript的,它使用了minimatch库来进行匹配。
调用格式实例:
var glob = require("glob")// options 是可选的glob("**/*.js", options, function (er, files) { // files 是匹配到的文件的数组. // 如果 `nonull` 选项被设置为true, 而且没有找到任何文件,那么files就是glob规则本身,而不是空数组 // er是当寻找的过程中遇的错误})
它可以让我们解析的路径中的某一段使用下面这些字符表示,来实现更加灵活的匹配规则。
特殊字符实例:
*
: 匹配该路径段中0个或多个任意字符:
//*:匹配路径中某部分:0个或多个字符glob("js/*.js",function (er, files) { console.log(files)})
获取js目录下的所有js文件.(不包括以'.'开头的文件)
?
:匹配该路段中1个任意字符:
//?:匹配路径中某部分:1个字符glob("js/?.js",function (er, files) { console.log(files)})
获取js目录下所有名字只有1个字的js
[...]
:匹配该路径段中在指定范围内字符(注意不能组合,只能是其中一个字符)
//[]:匹配路径中某部分:指定的范围glob("js/a[0-3].js",function (er, files) { console.log(files)})
获取js目录下a开头,第二个字符为0-3之间的js
*(pattern)|(pattern)|(pattern)
:匹配括号中多个模型的0个或多个或人一个的组合(注意|
前后不能有空格)
//*(pattern|pattern|pattern): 匹配路径中的某部分: 多个模型中的0个或多个.//除了三个模型本身,如果是组合也可以,比如ab.js,但是仅仅包含某个模型是不行的,比如a4.js.glob("js/*(a|a1|b).js",function (er, files) { console.log(files)})
获取js目录下a.js, a1.js, b.js或者a, a1, b这几个字符的组合的js,比如ab.js
!(pattern|pattern|pattern)
:匹配不包含任何模型(注意!(pattern|pattern|pattern)
不等于!(*pattern|pattern|pattern)
)
//!(pattern|pattern|pattern): 匹配路径中的某部分: 不包含任何模型.//带有a或者b的,都排除.需要注意的是,它并非是*(a|b)的取反glob("js/!(a|b).js",function (er, files) { console.log(files)})
获取js目录下名字中不包含a,也不包含b的所有文件
?(pattern|pattern|pattern)
:匹配多个模型中的0个或任意1个,它和4的区别是,不可以组合,必须完全匹配
//?(pattern|pattern|pattern): 匹配路径中的某部分: 多个模型中的0个或1个.//精确匹配模型,不可以组合.glob("js/?(a|a2|b).js",function (er, files) { console.log(files)})
获取js目录下a.js, a2.js和b.js
+(pattern|pattern|pattern)
:匹配多个模型中的1个或多个,它和4的区别是必须有一个,为空不匹配
//+(pattern|pattern|pattern): 匹配路径中的某部分: 多个模型中的1个或多个.//可以是任意一个模型,也可以是他们的组合,比如ab.jsglob("js/+(a|a1|b).js",function (er, files) { console.log(files)})
获取js目录下a.js, a1.js, b.js或者a, a1, b这几个字符的组合的js,比如ab.js
- '@(pattern|pat*|pat?erN)':匹配多个模型中的任意1个
//@(pattern|pattern|pattern): 匹配路径中的某部分: 多个模型中的1个.//精确匹配模型,不可以组合.和?的区别就是不可以为空.必须要是其中的一个.glob("js/@(a|a1|b).js",function (er, files) { console.log(files)})
和6的区别是不匹配为空的情况
**
:和1一样,可以匹配任何内容,但**不仅匹配路径中的某一段,而且可以匹配a/b/c
这样带着/
的内容,所以,它还可以匹配子文件夹下的文件。
//**: 不是一个单独的路径中的某部分,而是可以带有'/',所以所有当前文件夹和子文件夹下都进行匹配glob("**/@(a|a1|b).js",function (er, files) { console.log(files)})
获取当前目录所有文件夹及子文件夹下的a.js,a1.js,b.js,还有一种方式是设置matchBase属性为true,同样可以起到在当前路径下搜索所有子文件夹的效果:
//matchBase: 设置为true以后,在当前目录下所有的文件夹和子文件夹里寻找匹配的文件glob("@(a|a1|b).js",{matchBase:true},function (er, files) { console.log(files)})
以上这些方式都是异步的,当取到匹配的文件时执行回调函数,如果需要同步的获取文件列表,可以用以下方法:
var files = glob.sync(pattern, [options])
它的用处有很多,主要就是用来获取文件的。比如下面这个实例就是用来配置webpack.config.js文件中入口文件的:
const HtmlWebpackPlugin = require('html-webpack-plugin');const htmlWP = new HtmlWebpackPlugin({template: './src/index.html'});var glob = require('glob');// 获取指定路径下的入口文件function getEntries(globPath) { var files = glob.sync(globPath), entries = {}; files.forEach(function(filepath) { var split = filepath.split('/'); var name = split[split.length - 2]; var entity = []; entity.push('./' + filepath); entries[name] = entity; }); return entries;}const config = { entry: getEntries('app/**/index/index.js'), output: { filename: 'webpack.bundle.js', path: './dist' }, module: { loaders: [ { test: /\.(js|jsx)$/, loader: 'babel-loader' } ] }, plugins: [ htmlWP ]}module.exports = config;
上面就是获取app下所有应用的index目录下的index.js入口文件。
1 0
- 模块使用记录学习——node-glob
- 模块使用记录学习——node-glob
- Python模块学习笔记— —glob
- node-glob学习
- [Python模块学习] glob模块
- Python标准模块——glob
- 学习python之 glob模块
- Python 标准库——os、glob模块
- Python 小模块——glob文件路径查找
- glob模块
- glob模块
- glob 模块
- glob模块
- python模块学习---glob 文件路径查找
- Python模块学习系列(1)----glob
- Python模块学习:glob 文件路径查找
- Python模块学习:glob 文件路径查找
- python模块学习---glob 文件路径查找
- centos 7 yum源文件配置详解及163 yum源更换
- spring mybatis 设置settings操作
- postgresql的一些使用技巧
- 观察者模式(行为型)
- mysql 5.7版本目录无data文件夹
- 模块使用记录学习——node-glob
- 用Navicat for mysql 管理远程数据库
- vbs教程《字符串处理》
- Paint类介绍 以及使用
- windows下查询被占用的端口, 并杀掉相应的进程
- 作旧年结束
- ActiveMQ+Spring 工程创建详解
- bzoj 2402 陶陶的难题II 01分数规划 树链剖分 线段树维护凸包
- Linux stat函数获取文件属性(文件大小,创建时间等)