2017-03-10 64 views
0

給定src/中的以下輸入文件,如何輸出dist/文件夾中的文件?Gulp.js - 輸出具有可變目錄名稱但具有固定文件名的文件

Project 
+-- src 
| a.md 
| b.md 
+-- dest 
| a/index.html 
| b/index.html 

// Gulpfile.js 
const gulp = require('gulp'); 
const md = require('gulp-markdown'); 

gulp.task('md',() => { 
    return gulp.src('src/**/*.md') 
    .pipe(md()) 
    .pipe(gulp.dest(// help)) 
}) 

我覺得這不是 Gulp.js - Use path from gulp.src() in gulp.dest()重複。該問題涉及變量目錄名稱變量文件名。這個問題涉及可變目錄名稱,但是具有恆定的文件名。

回答

3

嘗試使用吞氣,重命名插件https://www.npmjs.com/package/gulp-rename

你可以使用功能名稱映射:

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

... 

gulp.task('md',() => { 
    return gulp.src('src/**/*.md') 
    .pipe(md()) 
    .pipe(rename((path) => { 
     path.dirname += "/" + path.basename; 
     path.basename = "index"; 
    }) 
    .pipe(gulp.dest('dest')) 
}) 
+0

標記爲正確else部分。 – jpls93

+0

@ AnanthRao的答案更模塊化。 +1。 –

0

使用gulp-if

運行

npm install gulp-if --save-dev 

你的任務

// Gulpfile.js 
const gulp = require('gulp'); 
const md = require('gulp-markdown'); 
const gulpif = require('gulp-if'); 

gulp.task('md',() => { 
    return gulp.src('src/**/*.md') 
    .pipe(md()) 
    .pipe(gulpif('a.md', gulp.dest('dest/a'))) 
    .pipe(gulpif('b.md', gulp.dest('dest/b'))); 
}) 

替代

使用的一飲而盡,如果短,但不易閱讀

gulp.task('md',() => { 
    return gulp.src('src/**/*.md') 
    .pipe(md()) 
    .pipe(gulpif('a.md', gulp.dest('dest/a'), gulpif('b.md', gulp.dest('dest/b')))); 
}) 
+0

對不起。這是錯誤的。這將輸出 + - DEST | a.html | b.html 而不是 + - 目標 | a/index.html | b/index.html – jpls93

+0

@JohnPatrick,我誤解了這個問題。我認爲你可以使用gulp-if作爲條件目的地。我會改變答案來反映一個例子。 –

相關問題