2016-06-13 145 views
1

我試圖用一口一個文件複製到同一個目錄中有dfferent名稱複製文件到新的名稱在同一目錄中。在Unix中,這僅僅是cp ./data/file.json.bak ./data/file.json在吞噬中似乎更加棘手(我在Windows系統上)。使用一飲而盡

我已經試過:

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