2016-03-14 66 views
1

我是Gulp的新人,當我嘗試將文件輸出到他們父母的路徑時,我得到了股票。如何找到gulp.dest()中父目錄的路徑?

我的目錄,像這樣:

app/page_a/less/a.less 
app/page_a/css 

我的目標是:

app/page_a/less/a.less 
app/page_a/css/a.css 

下面是我在做什麼:

我使用**是因爲我想匹配我的所有page_ *模塊。

gulp.task('test', function() { 
    var files = ['./app/**/*.less']; 
    return gulp.src(files, { 
      base: '.' // Now the base url becomes where the *.less is. 
     }) 
     .pipe(less()) 
     .pipe(gulp.dest('.')); 
}); 

我的結果:(這顯然是錯誤的:()

app/page_a/less/a.less 
app/page_a/less/a.css 
app/page_a/css 

所以,我怎麼能輸出*.css到相應的app/page_*/css路徑?

回答

1

您在base選項指定gulp.src()的路徑是不是相對於每個相應.less文件,而是當前的工作目錄。這通常是目錄中Gulpfile.js所在英寸

你真正想要做的是改變你的less()插件後每個結果.css文件的路徑已經用完,所以當.css文件被寫入到由gulp.dest()指定的目錄/less/部分路徑已被替換爲/css/

這也正是gulp-rename插件是什麼:

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

gulp.task('default', function() { 
    return gulp.src('./app/**/*.less') 
    .pipe(less()) 
    .pipe(rename(function(file) { 
     file.dirname = file.dirname.replace(/less$/, "css"); 
    })) 
    .pipe(gulp.dest('./app/')); 
}); 
+0

這真是太棒了,老兄。我閱讀了文檔[gulp-rename](https://www.npmjs.com/package/gulp-rename)並得到了重點 - ** dirname是從gulp.src設置的基本目錄到filename **(所以這裏是'/ **/*。less'),那麼我們只需要給gulp.dest()一個相對的基路徑,這是** dirname **的父目錄。無論如何,很多感謝的人! – Soon

0

隨着一飲而盡.dest('。')你說'這裏' 試一下:

.pipe(gulp.dest('./app/page_a/css/')); 

這應該是工作

+0

這是行不通的。很快使用'base'選項就是錯誤的,你的解決方案有幾個原因,最重要的是當'.app'文件放在不同的子文件夾中時,比如'.app/page_b/less/b.less'或'./app/page_c /少/ c.less'。 –