Node.js glob包含/排除文件

Node.js glob包含/排除文件,node.js,gulp,minimatch,node-glob,Node.js,Gulp,Minimatch,Node 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(pl

这是我将相关文件从源代码复制到构建目录的当前代码。它没有像预期的那样工作

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}));
我的想法是:

  • 选择src中的所有文件和文件夹
  • 删除所有js和sass文件,因为它们被编译/concat/minified并复制到另一个任务中构建
  • 但是console.js和cordova.js必须被复制,所以我想将它们重新包含到glob中
  • 嗯,我认为globArray中的元素顺序是一个优先级或其他东西,因此,例如console.js在被过滤掉后会被重新包含。似乎不是这样:(


    我能做些什么?

    因此,您面临的真正问题是缺乏“调试”或“检查”gulp流中当前正在处理的内容的能力。在我的工作流中,有两个不可替代的gulp插件可以帮助您了解正在发生的事情:

    • 大口喝
    • 狼吞虎咽

      var gutil=require('gulp-util'); var rename=require('gulp-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

    此外,最好一个接一个或成对地测试您的路径,以查看您的路径是否在正确的轨道上,从而在所有全局未按预期工作时不会不知所措。隔离全局问题并相应更新

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

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

    '!src/**/*.{sass,scss,js}'
    
    我希望这能让你走上正轨