Gulp.js - 输出具有可变目录名但具有常量文件名的文件

时间:2017-03-10 14:45:42

标签: gulp

鉴于src/中的以下输入文件,如何输出dist/文件夹中的文件?

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()。该问题涉及可变目录名变量文件名。这个问题涉及变量目录名具有常量文件名。

2 个答案:

答案 0 :(得分:3)

尝试使用gulp-rename插件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'))
})

答案 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-if的else部分,更短但不太可读

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'))));
})