Может ли Web Essentials 2013 компилировать уценку в HTML с помощью шаблона?

Я использую Web Essentials 2013 с VS2013.

У меня есть файл .md, который я использую для написания документации об услуге. Предварительный просмотр работает нормально, я даже использовал WE-Markdown.css и WE-Markdown.html для более красивого предварительного просмотра. Но когда он компилируется в HTML (используя пункт контекстного меню «Web Essentials -> Compile Markdown to HTML»), он просто генерирует эквивалентный вывод с любым тегом <html> или <body>.

Есть ли способ заставить его скомпилировать его так же, как он генерирует предварительный просмотр?

В противном случае мне придется изменить сборку моего проекта, чтобы скомпилировать уценку с чем-то еще, используя шаблон.

Я попытался открыть исходный код, но не могу загрузить решение с помощью VS2013 (или мне не хватает некоторых SDK). Я также не могу найти, где компиляция происходит в источнике на GitHub.


person Christian Droulers    schedule 29.07.2015    source источник
comment
Я ничего не знаю о Web Essentials (таким образом, комментарий, а не ответ), но для синтаксических анализаторов Markdown является нормой не создавать весь документ. Если вы думаете о Markdown как о фрагменте документа, это помогает. Некоторые парсеры Markdown предлагают возможность обернуть вывод в документ, но это редко. На самом деле, я считаю багом, если парсер не дает мне фрагмент по умолчанию. Я всегда предполагаю, что синтаксический анализатор этого не сделает, и ожидаю, что мне придется сделать это самому. Я обнаружил, что инструменты, которые предлагают эту опцию, дают мне результат, который я все равно не могу использовать. Я всегда создаю свою собственную обертку.   -  person Waylan    schedule 29.07.2015
comment
В итоге я написал сценарий PowerShell, использующий шаблон WE-Markdown.html, который использует WebEssentials, и запустил сценарий на событии после сборки. Спасибо за ваш вклад!   -  person Christian Droulers    schedule 30.07.2015
comment
@ChristianDroulers: Не могли бы вы опубликовать ответ на свой вопрос о том, как вы это сделали? Мне тоже было бы интересно этим заняться.   -  person Greg Burghardt    schedule 14.01.2016
comment
@GregBurghardt Буду! Я забыл об этом вопросе! Извиняюсь!   -  person Christian Droulers    schedule 15.01.2016


Ответы (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;

А вот репозиторий github со всем https://github.com/cdroulers/webessentials-markdown-template

И пример события после сборки:

PowerShell.exe $(SolutionDir)Generate-Documentation.ps1 $(ProjectDir)docs\*.md Web_Page_Title_Here
person Christian Droulers    schedule 15.01.2016
comment
@GregBurghardt Вот оно! Как только вы заработаете, пожалуйста, внесите любые интересные изменения, которые вы сделали! - person Christian Droulers; 15.01.2016
comment
Сделаю. Я собираюсь заняться этим во вторник. Спасибо! - person Greg Burghardt; 17.01.2016
comment
Куда вы сохранили этот скрипт PowerShell? И можете ли вы показать пример вызова скрипта из вашего события Post build? - person Greg Burghardt; 25.01.2016
comment
Я заработал. Я также добавил в ваш ответ пример события пост-сборки. +1 - person Greg Burghardt; 25.01.2016
comment
Я только что понял, что это работает только с одним файлом за раз. Я разветвил ваш репозиторий GitHub. Я попробую свои силы и проанализирую несколько файлов. - person Greg Burghardt; 25.01.2016
comment
@GregBurghardt Это должен быть простой foreach ($item in (Get-ChildItem $MarkdownPath)). Ждем этого пиара! - person Christian Droulers; 26.01.2016