Web Essentials 2013 可以使用模板将 markdown 编译为 HTML 吗?

Can Web Essentials 2013 compile markdown to HTML with a template?

我将 Web Essentials 2013 与 VS2013 结合使用。

我有一个 .md 文件,用于编写有关服务的文档。预览效果很好,我什至使用 WE-Markdown.cssWE-Markdown.html 来获得更漂亮的预览。但是当它编译为 HTML(使用 "Web Essentials -> Compile Markdown to HTML" 上下文菜单选项)时,它只是生成带有任何 <html><body> 标记的等效输出。

有没有办法告诉它以与生成预览相同的方式编译它?

否则,我将不得不更改项目的构建以使用模板将 Markdown 与其他内容一起编译。

我尝试打开源代码,但无法使用 VS2013 加载解决方案(或者我缺少一些 SDK)。我也无法在 GitHub 上的源代码中找到编译发生的位置。

我最终创建了一个 PowerShell 脚本来执行编译 + 模板化并在 post-build 事件中调用它。

这里是:

PARAM(
    [string]
    [Parameter(Mandatory = $True)]
    $MarkdownPath,
    [string]
    $Title
)

$MarkdownPath = Resolve-Path $MarkdownPath;

if (-not $Title)
{
    $Title = $MarkdownPath;
}

# Adjust this to your solution. There might be a better way to find WE-Markdown.html
$solutionPath = Resolve-Path $PSScriptRoot;

# Same for packages path
$cmarkExe = (Get-ChildItem (Join-Path $solutionPath .\packages\**\cmark.exe) -Recurse)[0].FullName;
$out = $MarkdownPath.Replace(".md", ".html");

$compiled = & $cmarkExe $MarkdownPath | Out-String;

$template = Get-Content (Join-Path $solutionPath WE-Markdown.html) -Encoding UTF8 -Raw;

$result = $template -replace "{##TITLE##}", $Title `
    -replace "{##SOLUTION_PATH_PLACEHOLDER##}", $solutionPath `
    -replace "{##PROJECT_PATH_PLACEHOLDER##}", "" `
    -replace "{##DOCUMENT_PATH_PLACEHOLDER##}", $MarkdownPath `
    -replace "{##MARKDOWN_HTML_PLACEHOLDER##}", $compiled `
    -replace "language-C#", "csharp"; # Replace any other thing that is relevant to your project

Set-Content -Path $out -Value $result -Encoding UTF8;

这是一个 github 存储库,其中包含所有内容 https://github.com/cdroulers/webessentials-markdown-template

和示例 Post-build 事件:

PowerShell.exe $(SolutionDir)Generate-Documentation.ps1 $(ProjectDir)docs\*.md Web_Page_Title_Here