以前の記事でも紹介したように、このサイトのコンテンツについてはNuxt.jsとContentful、コードブロックのシンタックスハイライトはPrismを使っています。

我々はNuxt.jsもといVue.jsを使うことがけっこう多いのでブログでも紹介していきたいところなのですが、PrismでVue.jsのコードをシンタックスハイライトすることができなかったので現状をまとめました。


現在対応言語にVue.jsはない。

Issueはあがっているものの動きは見られない。

↑のIssueに markup を使うといいよ、的なコメントがありますがHTMLとして解釈することになるため完全ではないようです。

これは「QiitaでVue.jsのシンタックスハイライトが使えるようになってる件」のような違いがでるようですが、とりあえずは markup を使うのがよさそうでした。

  • markup としてハイライト(大体よさそう)
<template>
	<div id="app">
		<h1>My Todo App!</h1>
		<TodoList/>
	</div>
</template>

<script>
import TodoList from './components/TodoList.vue'

export default {
	components: {
		TodoList
	}
}
</script>

<style lang="scss">
@import './variables.scss';

*, *::before, *::after {
	box-sizing: border-box;
}

#app {
	max-width: 400px;
	margin: 0 auto;
	line-height: 1.4;
	font-family: 'Avenir', Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	color: $vue-blue;
}

h1 {
	text-align: center;
}
</style>
  • js としてハイライト(いまいち)
<template>
	<div id="app">
		<h1>My Todo App!</h1>
		<TodoList/>
	</div>
</template>

<script>
import TodoList from './components/TodoList.vue'

export default {
	components: {
		TodoList
	}
}
</script>

<style lang="scss">
@import './variables.scss';

*, *::before, *::after {
	box-sizing: border-box;
}

#app {
	max-width: 400px;
	margin: 0 auto;
	line-height: 1.4;
	font-family: 'Avenir', Helvetica, Arial, sans-serif;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	color: $vue-blue;
}

h1 {
	text-align: center;
}
</style>

コードの出典はこちら