【问题标题】:gulp-exec : how to inject dest files in the command based on source filesgulp-exec : 如何根据源文件在命令中注入 dest 文件
【发布时间】:2016-06-04 08:00:13
【问题描述】:

我编写了一个 gulp 任务,用于根据以 markdown 格式编写的源文件生成 pdf 文件(使用 gulp-exec 插件和一个名为 Pandoc 的命令行工具)。

我的任务如下所示:

gulp.task('pandoc', function() {
  var options = {
    continueOnError: false,
    pipeStdout: false
  };
  var reportOptions = {
    err: true,
    stderr: true,
    stdout: true
  };
  gulp.src('./pandoc/**/*.md')
    .pipe(gulpexec('pandoc -f markdown -t latex -s <%= file.path %> -o pandoc/test/<%= file.relative %>.pdf', options))
    .pipe(gulpexec.reporter(reportOptions));
});

除了 dest 文件的格式如下: “filename.md.pdf”(如果源文件是“filename.md”)。 那是因为我在 exec 命令中使用了 ,它实际上存储了源文件的名称(“filename.md”)。

是否可以将 dest 文件写成这样:“filename.pdf”? 我尝试使用 而不是 但它不起作用。 当然,我可以创建另一个任务并重写所有文件,但我想找到一种更优雅的方式。 有什么想法吗?

谢谢

【问题讨论】:

    标签: path gulp pandoc gulp-rename gulp-replace


    【解决方案1】:

    您可以创建一个函数来生成所需的文件名,并通过gulp-exec 上的opt 参数将其注入:

    var gulpexec = require('gulp-exec');
    var path = require('path');
    
    gulp.task('pandoc', function() {
      var options = {
        continueOnError: false,
        pipeStdout: false
      };
      var reportOptions = {
        err: true,
        stderr: true,
        stdout: true
      };
    
      var outDir = './pandoc/test/';
    
      function execPandoc(outDir, options) {
        options = options || {};
    
        options._out = function(file) {
          return path.join(outDir, path.basename(file.relative, path.extname(file.relative)));
        };
    
        // Output an object to pipe into
        return gulpexec('pandoc -f markdown -t latex -s <%= file.path %> -o <%= options._out(file) %>.pdf', options)
      };
    
      gulp.src('./pandoc/**/*.md')
        .pipe(execPandoc(outDir, options))
        .pipe(gulpexec.reporter(reportOptions));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多