gulp-exec:如何根据源文件在命令中注入dest文件



我已经编写了一个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命令中的file.relatev%>,该命令实际存储源文件的名称("filename.md")。

是否可以将dest文件写成这样:"filename.pdf"?我尝试使用<%=file.basename%>而不是<%=file.rerelative%>,但它不起作用。当然,我可以创建另一个任务并重写所有文件,但我想找到一种更优雅的方式。知道吗?

感谢

您可以创建一个函数来生成所需的文件名,并通过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));
});

相关内容

  • 没有找到相关文章

最新更新