nul*_*ull 3 javascript glob node.js minimatch gulp
我想设置为我的javascript CONCAT在建任务水珠阵列一饮而尽.目录结构如下所示:
??? about
? ??? about.js
??? assets
??? contact
??? core
? ??? navbar
? ? ??? navbar.js
? ? ??? navbar.test.js
? ??? routing.js
? ??? routing.test.js
? ??? utils.js
? ??? utils.test.js
??? generated
? ??? footer.js
? ??? header.js
? ??? templates.js
??? home
??? app.js
??? config.js
Run Code Online (Sandbox Code Playgroud)
文件的顺序很重要:
我已经疯狂地尝试了各种通配符的组合,但对我来说并不强烈.
var inputFiles = [
'generated/header.js',
'app.js',
'!(generated)**/*.js', // <=---- ???
'generated/templates.js',
'generated/footer.js',
'!**/*.test.js'
];
Run Code Online (Sandbox Code Playgroud)
那么如何包含*.js除子目录以外的所有文件?
谢谢.
我想出的最好的:
var gulp = require('gulp');
var tap = require('gulp-tap');
gulp.task('default', function() {
return gulp.src([
'generated/header.js',
'app.js',
'*.js',
'./!(generated)/**/*.js', // <- All subdirs except 'generated'
'generated/{templates,footer}.js',
'!**/*.test.js',
'!node_modules/**'
]).pipe(tap(function(file) {
console.log(file.path);
}));
});
Run Code Online (Sandbox Code Playgroud)
运行它:
? glob-test gulp
[20:07:51] Using gulpfile ~/Desktop/glob-test/gulpfile.js
[20:07:51] Starting 'default'...
/Users/heikki/Desktop/glob-test/generated/header.js
/Users/heikki/Desktop/glob-test/app.js
/Users/heikki/Desktop/glob-test/config.js
/Users/heikki/Desktop/glob-test/gulpfile.js
/Users/heikki/Desktop/glob-test/about/about.js
/Users/heikki/Desktop/glob-test/core/routing.js
/Users/heikki/Desktop/glob-test/core/utils.js
/Users/heikki/Desktop/glob-test/core/navbar/navbar.js
/Users/heikki/Desktop/glob-test/generated/templates.js
/Users/heikki/Desktop/glob-test/generated/footer.js
[20:07:51] Finished 'default' after 326 ms
Run Code Online (Sandbox Code Playgroud)
主要技巧是避免"!" 包含文件时在glob开头的字符.
https://github.com/isaacs/minimatch#comparisons-to-other-fnmatchglob-implementations
"如果模式以!字符开头,那么它就会被否定."
PS.否定球的放置无关紧要.他们总是在幕后移动到最后.
| 归档时间: |
|
| 查看次数: |
4839 次 |
| 最近记录: |