多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>node-glob模块被众多前段构建工具使用;如fis,grunt,glup;内部使用了minimatch来匹配文件 >匹配规则 * *匹配0或多个个字符,但不包括'/'; var glob = require('glob'); var pattern = '*.js'; glob(pattern, function(err, files){ console.log(files); }); //--获取目录下所有js文件; * ?匹配1个字符; var pattern = 'node_modules/glo?.js'; glob(pattern, function(err, files){ console.log(files); }); * **匹配多个任意字符; var pattern = 'node_modules/**.js'; //--匹配node_modules目录下的js文件,不匹配子目录中的文件, //--当设置options中的matchBase:true时则匹配node_modules所有文件 * [pattren|pattern] : 匹配其中的一个; * ?(pattern|pattern) 匹配其中的一个或0个;不可以组合; var pattern = 'node_modules/?(a|b).js'; //--匹配a.js,b.js;不匹配ab.js * +(pattern|pattern) 匹配其中一个或多个;可任意组合 var pattern = 'node_modules/+(a|b).js' //--匹配a.js,b.js,ab.js,aab.js,abb.js;不匹配abc.js * *(pattern|pattern):匹配其中的0个或多个。可以组合 var pattren = 'node_modules/*(a|b).js'; //--匹配a.js,b.js,ab.js,aab.js,abb.js;不匹配abc.js * @(pattern|pattern):匹配其中的一个,不能为空;不可组合; var pattren = 'node_modules/@(a|b).js'; //--与?(pattern|pattern)相似 >注意事项: * 默认不匹配'.'开头命名的文件;在options中设置dot: true则匹配; * 如果pattern没有匹配任何文件,默认返回[];如果需要返回pattern本省,在options中设置nonull:true; >构造函数Glob: var Glob = glob.Glob; new Glob(pattern,options,function(err,matchs){ console.log(matchs); }); * 同步执行: var Glob = glob.Glob; var options = { sync:true }; var gl = new Glob(pattern,options); //--此时matchs挂在载实例对象的found属性上; console.log(gl.found); * 事件 //--四个事件end,error,abort,match;当设置options的sync:true时事件无效,因为实例化返回的是其他对象,而不是实例对象 end: 结束事件,提供matchs参数 error: 错误事件,提供错误信息; abort:终止事件,当abort()方法调用时触发 match:匹配到文件时触发 var Glob = require('glob').Glob; var path = require('path') var src = path.resolve(__dirname,'./node_modules'); var pattern = '**/*.js'; var options = { dot:true, cwd:src }; var gl = new Glob(pattern,options); gl.on('match',function (file){ console.log('match',file) }); gl.on('end',function (files){ console.log(files) }) gl.on('error',function (err){ console.log(err.stack) }) * 方法: //--三个方法abort,pause,resume var Glob = require('glob').Glob; var path = require('path') var src = path.resolve(__dirname,'./node_modules'); var pattern = '**/*.js'; var options = { dot:true, cwd:src }; var gl = new Glob(pattern,options); var index = 0; gl.on('match',function (file){ console.log('match',file,index) gl.pause() setTimeout(function (){ index>=5 && gl.abort() gl.resume(); index++; },1000) }); gl.on('abort',function (){ console.log('abort') }); >glob静态方法; * glob.sync(pattern,options):返回匹配的matchs; var glob = require('glob'); var path = require('path') var src = path.resolve(__dirname,'./node_modules'); var pattern = '**.js'; var options = { dot:true, cwd:src, matchBase:true, }; var matchs = glob.sync(pattern,options); console.log(matchs)