💎

[Prism.js] 特定の言語がシンタックスハイライトされない場合の対処法

2024/01/06に公開

問題

自サイトのコードブロックのシンタックスハイライト(syntax highlight)にPrism.jsを使用しているが、特定の言語だけシンタックスハイライトされない(テキストがカラーリングされない)

Prism.jsとは

  • 軽量で拡張可能なシンタックスハイライター
  • 導入方法がシンプルで簡単
  • 多数のサイトでの導入実績

https://prismjs.com/

要件

  • コードブロックのシンタックスハイライトに Prism.js を使用している
  • React, Next.jsで実装している

解決方法

モジュールとして import している場合、全ての言語が含まれているわけではないため、言語ごとに追加でimportする必要がある。

  1. モジュールとしてPrism.jsをimport
SomeComponent.tsx
import Prism from "prismjs";
  1. ブラウザの検証ツールでハイライトされないコードブロックの language- が何になっているか調べる
<pre class="language-tsx" tabindex="0">
  1. tsxをPrism.jsのcomponentsからimportする
SomeComponent.tsx
import Prism from "prismjs";
import "prismjs/components/prism-tsx";

シンタックスハイライトが適用されるようになりました 🎉
Before

After

参照

https://stackoverflow.com/questions/73840832/prismjs-not-highlighting-typescript-code-snippets

Discussion