Path gulpexec:如何基于源文件在命令中注入dest文件

Path gulpexec:如何基于源文件在命令中注入dest文件,path,gulp,pandoc,gulp-rename,gulp-replace,Path,Gulp,Pandoc,Gulp Rename,Gulp Replace,我已经编写了一个gulp任务,根据以降价格式编写的源文件生成pdf文件(使用gulpexec插件和一个名为Pandoc的命令行工具) 我的任务如下所示: gulp.task('pandoc', function() { var options = { continueOnError: false, pipeStdout: false }; var reportOptions = { err: true, stderr: true, stdout

我已经编写了一个gulp任务,根据以降价格式编写的源文件生成pdf文件(使用gulpexec插件和一个名为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));
});
gulp.task('pandoc',function(){
变量选项={
错误:false,
移液管:假
};
var报告选项={
呃:是的,
斯特德:是的,
斯图特:是的
};
咕噜咕噜声('./pandoc/***.md')
.pipe(gulpexec('pandoc-f markdown-t latex-s-o pandoc/test/.pdf',选项))
.pipe(gulpexec.reporter(reportOptions));
});
除了dest文件具有以下格式外,它工作正常: “filename.md.pdf”(如果源文件是“filename.md”)。 这是因为我在exec命令中使用,它实际上存储源文件的名称(“filename.md”)

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


谢谢

您可以创建一个函数来生成所需的文件名,并通过
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));
});
var gulpexec=require('gulp-exec');
var path=require('path');
吞咽任务('pandoc',函数(){
变量选项={
错误:false,
移液管:假
};
var报告选项={
呃:是的,
斯特德:是的,
斯图特:是的
};
var outDir='./pandoc/test/';
函数execPandoc(outDir,选项){
选项=选项| |{};
选项。_out=函数(文件){
返回path.join(outDir,path.basename(file.relative,path.extname(file.relative));
};
//输出要通过管道导入的对象
return gulpexec('pandoc-f markdown-t latex-s-o.pdf',选项)
};
咕噜咕噜声('./pandoc/***.md')
.pipe(execPandoc(outDir,选项))
.pipe(gulpexec.reporter(reportOptions));
});

您可以创建一个函数来生成所需的文件名,并通过
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));
});
var gulpexec=require('gulp-exec');
var path=require('path');
吞咽任务('pandoc',函数(){
变量选项={
错误:false,
移液管:假
};
var报告选项={
呃:是的,
斯特德:是的,
斯图特:是的
};
var outDir='./pandoc/test/';
函数execPandoc(outDir,选项){
选项=选项| |{};
选项。_out=函数(文件){
返回path.join(outDir,path.basename(file.relative,path.extname(file.relative));
};
//输出要通过管道导入的对象
return gulpexec('pandoc-f markdown-t latex-s-o.pdf',选项)
};
咕噜咕噜声('./pandoc/***.md')
.pipe(execPandoc(outDir,选项))
.pipe(gulpexec.reporter(reportOptions));
});