Pandoc에서 Markdown에서 Vue SFC를 생성해 보았습니다.
런타임으로 컴파일하는 것은 역시 무겁다고 생각하고,
경량화의 일환으로 전처리로 해 보았을 때의 비망록.
사전에 Pandoc에서 Vue의 SFC를 생성하면 좋았다(´ω`)
설치
$ brew install pandoc
템플릿 준비
이런 느낌의 파일을 준비한다.
$body$
에 markdown으로 쓴 HTML이 삽입되는 느낌<!-- ./vue-sfc.vue-->
<template>
<div>$body$</div>
</template>
<script lang="ts">
import { Component, Vue } from "nuxt-property-decorator";
@Component
export default class extends Vue {}
</script>
Pandoc에서 .vue 생성
이러한 Markdown 파일(
faq.md
)을 예로.# よくある質問 / FAQ
## 積読本しか登録してはいけないのですか?
이런 식으로 실행하면
$ pandoc -f markdown -t html --template=./vue-sfc.vue ./faq.md > ./FaqContent.vue
# -f ... 入力ファイルのフォーマット
# -t ... 出力のフォーマット
# --template ... テンプレートファイル
이러한 파일이 생성됩니다.
<!-- FaqContent.vue -->
<template>
<div><h1>よくある質問 / FAQ</h1>
<h2>積読本しか登録してはいけないのですか?</h2><div>
</template>
<script lang="ts">
import { Component, Vue } from "nuxt-property-decorator";
@Component
export default class extends Vue {}
</script>
그리고, 이 컴퍼넌트 (
FaqContent.vue
)를 표시하는 페이지에 import하면 OK!런타임으로 컴파일하지 않아도, 전처리로 갈 수 있었다(´ω`)
작은 재료
npm run build
때때로 생성수동으로 실행하는 것은 귀찮기 때문에,
package.json
의 scripts
에 추가했다.{
"scripts": {
"dev": "npm run build:md && nuxt",
"build": "npm run build:md && nuxt generate",
"build:md": "pandoc -f markdown -t html --template=./vue-sfc.vue ./faq.md > ./FaqContent.vue",
}
}
.md 내에서 다른 구성 요소 사용
다른 컴퍼넌트를 사용하고 싶을 때는, 템플릿에 추가해 둔다.
이번에는 vue-tweet-embed 을 사용하고 싶었기 때문에 추가.
<template>
<div>$body$</div>
</template>
<script lang="ts">
import { Component, Vue } from "nuxt-property-decorator";
import { Tweet } from "vue-tweet-embed";
@Component({ components: { Tweet } })
export default class extends Vue {}
</script>
원시 HTML을 표시하려면 입력 형식에
+raw_html
를 붙인 것 같습니다.$ pandoc -f markdown+raw_html -t html --template=./vue-sfc.vue ./faq.md > ./FaqContent.vue
단지, 제대로 변환되지 않는 것이 있으므로,
sed
로 치환하거나 하고 있다...$ pandoc -f markdown+raw_html -t html --template=./vue-sfc.vue ./faq.md | sed 's/<Tweet/<Tweet/g' | sed 's:></Tweet>:></Tweet>:g' > ./FaqContent.vue
Markdown의 쓰는 방법 등으로 회피할 수 있을지도 모르지만, 잠정적으로 이 대응. .
이상!!
이런것을 만들고 있습니다!!
적독용의 독서 관리 어플리케이션 「적독 하우 매치」를 릴리스했습니다!
적독 하우 매치은 Nuxt.js+Firebase에서 개발 중입니다!
괜찮다면 놀아주세요 ヽ (= '▽`=) 노
요청, 감상, 조언 등이 있다면,
공식 계정( @MemoryLoverz )과 개발자( @kira_puka )까지♪
참고로 한 사이트
Reference
이 문제에 관하여(Pandoc에서 Markdown에서 Vue SFC를 생성해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kira_puka/items/1e68c7838f123cd1255b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)