2016-04-04 5 views
1

いくつかのjsファイルを特定の順序で追加してから残りのものを追加する方法はありますか?Gulp Concatファイルを順番に他のjsファイル

var concat = require('gulp-concat'); 

gulp.task('scripts', function() { 
    return gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js', './lib/**/*.js']) 
    .pipe(concat('all.js')) 
    .pipe(gulp.dest('./dist/')); 
}); 

私はグロブを使用しているので、それではすでに連結されたファイルを追加するかどうかはわかりません。

答えて

0

gulp.src()node-globを使用します。あなたがnode-globsource codeを見れば著者は、アルゴリズムの擬似コードの記述を与える(短く、完全な疑似コードのソースコードを参照してください):これはあなたのための手段は何

// 1. Get the minimatch set 
// 2. For each pattern in the set, PROCESS(pattern, false) 
// 3. Store matches per-set, then uniq them 

は次のとおりです。

注文は保存されます。ファイル./lib/file3.js,./lib/file1.jsおよび./lib/file2.jsは、明示的にgulp.src()にその順序で渡すと、この順序で放出されます。その場合はgulp-orderを使用する必要はありません。

重複はありません。ファイルが一元化されているため、それらのファイルはいずれもgulpストリームで2回発行されません。実際にnode-globbrace expansionのための重複を防ぐために、特定の予防措置を取ります。いくつかのケースでは

nouniqueは、ブレース展開パターンは、結果セット内に複数回現れて同じファイルになります。デフォルトでは、この実装は結果セットに重複を防止します。この動作を無効にするには、このフラグを設定します。

と同様にsymbolic links用:その内容は、パターンの後続部分に対して一致かもしれませんディレクトリをシンボリックリンク

注、**の一部としてクロールされていません。これにより、無限ループや複製などが防止されます。

TLDR:あなたのコードが動作します。

2

Gulp-orderあなたが探しているものかもしれません。私は次のコードをテストしていませんが、docsはややうまくいくことを示唆しています。それがうまくいかない場合は、可能であれば、あなたがディレクトリにスコープを張るように、最後のglobstarをより具体的にすることをお勧めします。

var order = require("gulp-order"); 

gulp.task('scripts', function() { 
    return gulp.src('./lib/**/*.js') 
    .pipe(order([ 
     'file3.js', 
     'file1.js', 
     'file2.js', 
     '**/*.js' 
    ])) 
    .pipe(concat('all.js')) 
    .pipe(gulp.dest('./dist/')); 
}); 

また、実例があるarticleもあります。

関連する問題