2014-10-06 78 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}' 

我希望這可以讓你在正確的軌道上!