1

マークダウン形式で記述されたソース ファイルに基づいて pdf ファイルを生成する gulp タスクを作成しました (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」の場合)。これは、ソース ファイルの名前 ("filename.md") を実際に格納する exec コマンドで <%= file.relative %> を使用しているためです。

dest ファイルを "filename.pdf" のように記述できますか? <%= file.relative %> の代わりに <%= file.basename %> を使用しようとしましたが、うまくいきません。もちろん、別のタスクを作成してすべてのファイルを書き換えることもできますが、もっと洗練された方法を見つけたいと思います。何か案が ?

ありがとう

4

1 に答える 1

0

目的のファイル名を生成する関数を作成し、optパラメーター onを介して挿入できgulp-execます。

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));
});
于 2017-01-16T17:36:44.247 に答える