Node.js glob包含/排除文件

这是我目前的代码,从我的源复制相关文件到我的构build目录。 它没有按预期工作

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. selectsrc中的所有文件和文件夹
  2. 删除所有js和sass文件,因为它们被编译/连续/缩小并复制到另一个任务中
  3. 然而console.js和cordova.js必须被复制,所以我想重新将它们包括到glob中

那么,我认为globArray中的元素顺序是一个优先事项或东西,所以,例如console.js被滤除后重新包括。 它似乎不是这样:(

我能做什么?

因此,您所面临的真正问题是缺乏“debugging”或“检查”吞吐stream中当前正在处理的内容的能力。 在我的工作stream程中,有两个不可替代的gulp插件可以帮助我们弄清楚发生了什么事情:

  • 一饮而尽,UTIL
  • 一饮而尽,重命名

    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})); 

然后,您只需查看日志中的输出即可查看正在处理的文件,然后相应地更新您的通配符。

另外,你最好还是一对一testing你的path,看看你是否在正确的轨道上,所以当所有的球体没有如预期的那样工作时,你不会感到不知所措。 隔离glob问题并相应地更新。

也只是一个提示,让你在正确的轨道,这glob:

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

需要是:

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

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