Web Essentials 2013可以使用模板将markdown标记为HTML吗?

时间:2015-07-29 15:00:51

标签: markdown web-essentials

我正在使用带有VS2013的Web Essentials 2013。

我有一个.md文件,用于编写有关服务的文档。预览工作正常,我甚至使用WE-Markdown.cssWE-Markdown.html进行更漂亮的预览。但是当它编译为HTML(使用&#34; Web Essentials - &gt;编译Markdown到HTML&#34;上下文菜单选项)时,它只会使用任何<html><body>标记生成等效输出

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

否则,我必须更改我的项目构建,以使用模板使用其他内容编译markdown。

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

1 个答案:

答案 0 :(得分:1)

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

这是:

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;

这是一个包含所有https://github.com/cdroulers/webessentials-markdown-template

的github存储库

示例构建后事件:

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