2016-06-13 4 views
1

gulpを使用して別の名前のファイルがすでに存在する同じディレクトリにファイルをコピーしようとしています。 Unixではこれは単純にcp ./data/file.json.bak ./data/file.jsonです。それはもっと厄介なようです(私はWindowsシステム上です)。gulpを使用して同じディレクトリ内のファイルを同じディレクトリにコピーします。

私が試してみた:

gulp.task('restore-json',function(){ return gulp.src('./data/file.json.bak') .pipe(gulp.dest('./data/file.json',{overwrite:true})); });

ファイルが存在する場合、私はEEXISTエラーを取得します。存在しない場合は、file.jsonをディレクトリとして作成します。

gulpはglobbingを使用しており、効果的にはsrcdestを処理しています。私はこれを行うことができる最も効率的な方法をご存じですか?回避策は、ファイルをtmpディレクトリにコピーしてから、globワイルドカードを使用して名前を変更してコピーすることですが、それは正しい方法ですか?

答えて

4

gulp.dest()に渡す引数は、ではなく、です。 ディレクトリの名前で、ストリーム内のすべてのファイルに書き込むようにします。 docsを参照してください。

あなたはファイル名を変更したい場合は、gulp-renameプラグインを使用します。私は、ファイルの名前を変更した場合

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

gulp.task('restore-json',function(){ 
    return gulp.src('./data/file.json.bak') 
    .pipe(rename({extname:''})) 
    .pipe(gulp.dest('./data/')); 
}); 
+0

を、私はちょうど私が場所に滞在したいストリーム内のファイルとオリジナルではないの名前を変更するのですか? – dewd

+0

はい、ストリーム内のファイルの名前が変更されます。つまり、 'gulp.dest()'によってディスクに書き込まれたときに、ファイルのコピーを効果的に作成することができます。 –

+0

^それがあります。ありがとう。 – dewd

関連する問題