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

Gulp.js-输出具有可变目录名但具有恒定文件名的文件,gulp,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

给定
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重命名插件

可以使用函数进行名称映射:

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

尝试使用gulp重命名插件

可以使用函数进行名称映射:

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'))
})
使用:

跑步

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

跑步

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

我很抱歉。这是错误的。这将输出+--dest | a.html | b.html,而不是+--dest | a/index.html | b/index。html@JohnPatrick,我误解了这个问题。我想如果有条件的目的地,你可以直接喝一大口。我将更改答案以反映一个示例。对不起。这是错误的。这将输出+--dest | a.html | b.html,而不是+--dest | a/index.html | b/index。html@JohnPatrick,我误解了这个问题。我想如果有条件的目的地,你可以直接喝一大口。我将改变答案以反映一个例子。@AnanthRao的答案更加模块化+阿南特拉奥的回答更为模块化+1美元。