2014-09-26 50 views
0

我正嘗試使用gulp重命名到流中的文件。這是我的代碼:gulp重命名沒有按預期工作

var jsFiles = gulp.src(['app/scripts/modules.js', 'app/scripts/**/*.js']) 
    .pipe(map(function(path, callback) { 
     path.dirname = Path.join('./dist', 'scripts', path.basename + path.extname); 
    })); 

我跳得到下面的轉換:

app/scripts/*  -> dist/scripts/* 
    app/scripts/abc/* -> dist/scripts/abc/* 

相反,我得到:

app/scripts/*  -> app/scripts/dist/scripts/* 
app/scripts/abc/* -> app/scripts/dist/scripts/abc/* 

什麼是錯的代碼? 無論如何,一個替代方案就像地圖功能。我發現這個:https://github.com/dominictarr/map-stream,但我不知道如何使用它來滿足這種需求。

回答

0

您可以在gulp.src中指定一個基數來確定匹配文件路徑的起始目錄。默認情況下它是process.cwd(),但您可以將其更改爲任何您想要的。

因此,相對路徑將裁剪您指定的所有base部分。

var jsFiles = gulp.src(['app/scripts/modules.js', 'app/scripts/**/*.js'], { base: 'app/scripts' }) 
+0

我想讓這些任務運行異步,因此我不能依賴位於dist/scripts /中的文件。我只是想改變每個文件的名稱,以便將其注入index.html。 – Naor 2014-09-27 00:44:03

+0

然後你應該配置你的'gulp.src'參數的'base'選項,看看我更新的答案。 – 2014-09-27 10:28:12

+0

既然你已經接受了這個,我會刪除我的答案的所有第一部分:) – 2014-09-27 12:29:18