、私はどうなる:
var gulp = require('gulp');
var gt = require('through-gulp');
var read = require('gulp-read');
var remote_source_dir = "src/"; // must end with/
gulp.src('destination/**/*', {read:false})
.pipe(gt(function(vinyl,enc,cb) {
vinyl.path = remote_source_dir + vinyl.relative;
vinyl.base = remote_source_dir;
cb(null, vinyl);
}))
.pipe(read())
.pipe(gulp.dest("destination"));
背景:ガルプ・ストリームは、「ビニル」オブジェクトを使用します。基本的にファイルパスとファイルの内容が含まれています。続きを読むhere。
gulp.src()
呼び出しは、更新する宛先のすべてのファイル名を取得します。読み込みをfalseに設定して、読み込み先ディレクトリ内のファイルの実際の内容を読み込まないようにします(内容は実際に読み込み元のディレクトリから読み込むためです)。
gt()
は変換ストリームを作成し、すべてのビニールオブジェクトは指定された関数を通過します。この関数は、ファイルのパスとベースを調整して、(リモートの)ソースディレクトリを指すようにします。 cb(null, vinyl);
は最終的に変換の結果を報告します。
次に、read()
は、ファイルの内容をvinylオブジェクトに読み込むことによって正しいソースファイル名を含むビニールを変換します。
最後にgulp.dest()
は、指定された宛先ディレクトリにファイルを書き込みます。
ヒント:テストの場合、gulp.dest()
関数の引数を"destination"
のように変更することができます。 "destination2"
と入力し、コピーしたファイルを別のディレクトリに出力します。次に、destinationとdestination2のディレクトリを比較して、正しい操作を確認します。
注:出力先ディレクトリの一部のファイルがソースディレクトリに存在しない場合、スクリプトは失敗します。コピー先ディレクトリ内の特定のファイルをコピーから除外する場合は、gulp-filterのgulp.src()
とgt()
の間を使用できます。または、gt()
トランスフォームストリームでファイル名をプログラムで確認し、スキップするファイルにcb(null, vinyl)
の代わりにcb()
とだけ呼び出すこともできます。