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のドキュメントもあるが、おそらく直接使うことはない。