Skip to content

AstroやStarlightでシンタックスハイライト未対応の言語に対策する

コードブロックに言語を設定しているとき、Astroでビルドすると以下のような警告が発生する場合がある。

[! Warning] [WARN] [astro-expressive-code] Error while highlighting code block using language “troff” in document “filename.md”. The language could not be found. Using “txt” instead.

astro-expressive-codeの内部で利用しているShikiがコードブロックの言語に対応していないことが原因なので、カスタム言語をロードするか、別の名前にエイリアスを貼っておくといい。

import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
export default defineConfig({
integrations: [
starlight({
expressiveCode: {
shiki: {
langAlias: {
'dataview': 'sql',
'troff': 'asm',
},
},
},
}),
},
});

上では langAlias を使ったが、Syntax Highlightingのドキュメントには他のオプションもある。

元となっているShikiのドキュメントもあるが、おそらく直接使うことはない。