【问题标题】:Gulp.js - Output files with variable directory names but with a constant filenameGulp.js - 具有可变目录名称但具有恒定文件名的输出文件
【发布时间】:2017-03-10 14:45:41
【问题描述】:

鉴于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()。该问题涉及变量目录名称​​和变量文件名。这个问题处理变量目录名称​​但有一个常量文件名。

【问题讨论】:

    标签: gulp


    【解决方案1】:

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

    【讨论】:

    • @AnanthRao 的回答更加模块化。为此 +1。
    【解决方案2】:

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

    【讨论】:

    • 对不起。这是错误的。这将输出 +-- dest |一个.html | b.html 而不是 +-- dest |一个/index.html | b/index.html
    • @JohnPatrick,我误解了这个问题。我认为您可以将 gulp-if 用于条件目的地。我将更改答案以反映示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2012-02-24
    • 2016-01-05
    • 2017-01-10
    相关资源
    最近更新 更多