Web Essentials 2013 可以使用模板将 markdown 编译为 HTML 吗?
Can Web Essentials 2013 compile markdown to HTML with a template?
我将 Web Essentials 2013 与 VS2013 结合使用。
我有一个 .md 文件,用于编写有关服务的文档。预览效果很好,我什至使用 WE-Markdown.css
和 WE-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
我将 Web Essentials 2013 与 VS2013 结合使用。
我有一个 .md 文件,用于编写有关服务的文档。预览效果很好,我什至使用 WE-Markdown.css
和 WE-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