Node.js glob包含/排除文件



这是我当前的代码,用于将相关文件从我的源代码复制到我的构建目录

return gulp.src([
    'src/**/*',
    '!src/**/*(*.sass|*.scss|*.js)',
    '!src/(components|config|elements|less|sass|scss|platforms)',
    'src/console.js',
    'src/cordova.js',
    'src/config.xml',
]).pipe(plugins.copy("www", {prefix: 1}));

我的想法是:

  1. 选择src中的所有文件和文件夹
  2. 删除所有js和sass文件,因为它们会被编译/concat/缩小并复制到另一个任务中进行构建
  3. 但是console.js和cordova.js必须被复制,所以我想将它们重新包含到glob中

好吧,我认为globArray中的元素顺序是一个优先级或其他什么,所以例如console.js在被过滤掉后会被重新包括在内。情况似乎并非如此:(

我能做什么?

因此,您面临的真正问题是缺乏"调试"或"检查"gullow流中当前正在处理的内容的能力。在我的工作流程中,有两个不可替代的gullow插件可以帮助弄清楚发生了什么:

  • 大口使用
  • gulp重命名

    var gutil=require('gul-util');var rename=require('gup-rename');

现在,试着将这个代码片段附加到您的示例中,如下所示:

var gutil = require('gulp-util');
var rename = require('gulp-rename');
.....
return gulp.src([
    'src/**/*',
    '!src/**/*(*.sass|*.scss|*.js)',
    '!src/(components|config|elements|less|sass|scss|platforms)',
    'src/console.js',
    'src/cordova.js',
    'src/config.xml',
]).pipe(rename(function(filepath) {
          gutil.log(filepath.basename);
})).pipe(plugins.copy("www", {prefix: 1}));

然后,您所要做的就是查看日志中的输出,查看正在处理的文件,然后相应地更新您的globbing。

此外,你最好一个接一个或成对地测试你的路径,看看你是否走在正确的轨道上,这样当所有的地球仪都没有按预期工作时,你就不会不知所措。隔离glob问题并相应更新。

也只是一个提示,让你走上正确的轨道,这个地球仪:

'!src/**/*(*.sass|*.scss|*.js)'

需要:

'!src/**/*.{sass,scss,js}'

我希望这能让你走上正轨!

最新更新