2014-10-06 75 views
1

这是我的当前代码,用于将相关文件从源代码复制到我的构建目录。它确实如预期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和青菜文件选择所有文件和文件夹,因为它们被编译/ CONCAT /精缩并复制到另一个任务
  3. 但是console.js和cordova.js必须被复制,所以我想将它们重新包含到glob中

嗯,我认为在globArray中的元素顺序是一个优先事项或某事,所以,例如,在过滤掉console.js后,它会被重新引入。它似乎不那么:(

我能做些什么?

回答

3

所以,你所面临的真正的问题是缺乏对“调试”或“检查”什么正在吞气流处理能力。在我的工作流程中,两个不可替代一饮而尽插件,首先要弄清楚是怎么回事帮助是:

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

    VAR gutil =需要( '吞掉-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})); 

然后,所有你需要做的就是看看你的日志输出,以查看哪些文件正在处理,并然后相应地更新您的通配符。

此外,您最好逐个或成对测试您的路径,以确定您是否处于正确的轨道上,并且在所有球体未按预期工作时都不会不知所措。隔离glob问题并相应地更新。

还只是一个提示,让你在正确的轨道上,这水珠:

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

需求是:

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

我希望这可以让你在正确的轨道上!