在剥离 Jekyll Front-Matter 的同时将 Markdown 文件转换为 PDF
Convert Markdown files to PDF while stripping Jekyll Front-Matter
我有一个 javascript 文件,它应该循环遍历给定的目录,为文件编制索引,去掉前面的内容,然后将它们转换为 PDF 文件。
我的大部分流程都在运行,但出于某种原因,我的 .replace
函数似乎没有执行任何操作。
代码如下:
var fs = require( 'fs' );
var path = require( 'path' );
var process = require( 'process' );
var markdownpdf = require( 'markdown-pdf' )
var md_dir = "_pages";
var pdf_dir = "assets/pdf"
// Loop through all the files in the directory
fs.readdir( md_dir, function( err, files ) {
if( err ) {
console.error( "Could not list the directory.", err );
process.exit( 1 );
}
files.forEach( function( file, index ) {
// Make one pass and make the file complete
var md_path = path.join( md_dir, file );
var pdf_path = path.join( pdf_dir, file + '.pdf' );
fs.stat( md_path, function( error, stat ) {
if( error ) {
console.error( "Error stating file.", error );
return;
}
// Start PDF Process on the files
if( stat.isFile() ) {
console.log( "'%s' is a file.", md_path );
console.log( "Stripping Jekyll Front-Matter...");
var fileContents = fs.readFileSync(md_path, 'utf8');
var pattern = /^---\n.*\n---\n/;
// Strip everything between the first two sets of '---'
var stripped_md = fileContents.replace( pattern, '' );
console.log( "Front-Matter stripped." );
// Pass that to markdown-pdf
markdownpdf().from.string(stripped_md).to(pdf_path, function () {
console.log("Created", pdf_path)
} );
}
// If it's not a file
else if( stat.isDirectory() )
console.log( "'%s' is a directory.", md_path );
} );
} );
} );
在正则表达式模式中,. char 匹配除换行符以外的所有内容。
FrontMatter 有换行符,因此您必须将其添加到模式中。
喜欢:var pattern = /^---(.|\n)*?---\n/;
表示 --- "tags"
之间的所有内容或换行符
那个?使其不贪心
我有一个 javascript 文件,它应该循环遍历给定的目录,为文件编制索引,去掉前面的内容,然后将它们转换为 PDF 文件。
我的大部分流程都在运行,但出于某种原因,我的 .replace
函数似乎没有执行任何操作。
代码如下:
var fs = require( 'fs' );
var path = require( 'path' );
var process = require( 'process' );
var markdownpdf = require( 'markdown-pdf' )
var md_dir = "_pages";
var pdf_dir = "assets/pdf"
// Loop through all the files in the directory
fs.readdir( md_dir, function( err, files ) {
if( err ) {
console.error( "Could not list the directory.", err );
process.exit( 1 );
}
files.forEach( function( file, index ) {
// Make one pass and make the file complete
var md_path = path.join( md_dir, file );
var pdf_path = path.join( pdf_dir, file + '.pdf' );
fs.stat( md_path, function( error, stat ) {
if( error ) {
console.error( "Error stating file.", error );
return;
}
// Start PDF Process on the files
if( stat.isFile() ) {
console.log( "'%s' is a file.", md_path );
console.log( "Stripping Jekyll Front-Matter...");
var fileContents = fs.readFileSync(md_path, 'utf8');
var pattern = /^---\n.*\n---\n/;
// Strip everything between the first two sets of '---'
var stripped_md = fileContents.replace( pattern, '' );
console.log( "Front-Matter stripped." );
// Pass that to markdown-pdf
markdownpdf().from.string(stripped_md).to(pdf_path, function () {
console.log("Created", pdf_path)
} );
}
// If it's not a file
else if( stat.isDirectory() )
console.log( "'%s' is a directory.", md_path );
} );
} );
} );
在正则表达式模式中,. char 匹配除换行符以外的所有内容。
FrontMatter 有换行符,因此您必须将其添加到模式中。
喜欢:var pattern = /^---(.|\n)*?---\n/;
表示 --- "tags"
之间的所有内容或换行符那个?使其不贪心