glob匹配,排除所有JS文件
Posted
技术标签:
【中文标题】glob匹配,排除所有JS文件【英文标题】:Glob matching, exclude all JS files 【发布时间】:2014-06-26 18:17:43 【问题描述】:我是 gulp.js 的新用户。我想将所有非 javascript 文件移动到构建目录。我现在得到的是这样的:
//Test copy
gulp.task('test-copy', function()
gulp.src(['myProject/src/**/*.!(js|map|src)'])
.pipe(gulp.dest('myProject/build'));
);
//Results for various files
myProject/css/style.css //Copied - GOOD
myProject/html/index.html //Copied - GOOD
myProject/js/foo.js //Not Copied - GOOD
myProject/js/bar.min.js //Copied - BAD!
myProject/js/jquery-2.0.3.min.js //Copied - BAD!
myProject/js/jquery-2.0.3.min.map //Copied - BAD!
如您所见,它只匹配文件路径字符串中的第一个点之后,而不是最后一个点,如我所愿。如何修改 glob 搜索字符串以使其行为符合我的意愿?
【问题讨论】:
我没用过 gulp,但是你能在传递给 gulp.src 的模式末尾加一个 $ 吗? 不,很遗憾这不是正则表达式,而是extglob 语法。 【参考方案1】:试试这个 glob 模式:
myProject/src/**/!(*.js|*.map|*.src)
【讨论】:
工作就像一个魅力。对于未来的落后者,这会导致我的.json
清单文件也被排除在外的问题。我像这样修改了脚本,这意味着它仍然复制 config.js
或 *.json
文件:myProject/src/**/*(config.js|*.json|!(*.js|*.src|*map))
这对于与节点的grunt-ssh 和minimatch 进行文件匹配非常有帮助。
这很烦人,即使它看起来很常见。以上是关于glob匹配,排除所有JS文件的主要内容,如果未能解决你的问题,请参考以下文章
#每天五分钟之IT技能包# 前端自动化构建利器 gulp 方法篇