利用実績

Prism は、大小さまざまなウェブサイトで使用されています。その一部をご紹介します。

Smashing Magazine A List Apart Mozilla Developer Network (MDN) CSS-Tricks SitePoint Drupal React Stripe MySQL

Prism でハイライトされた Prism のソースコード (このメタさが気に入りましたか?)



	

Prism でハイライトされたこのページの CSS コード



	

Prism でハイライトされたこのページの HTML



	

Prism でハイライトされたこのページのロゴ (SVG)



	

まだ納得できない場合は、他の例を見るか、自分で試してみることができます。

全機能一覧

制限事項

基本的な使い方

ダウンロードした prism.cssprism.js ファイルをページに含める必要があります。例

<!DOCTYPE html>
<html>
<head>
	...
	<link href="themes/prism.css" rel="stylesheet" />
</head>
<body>
	...
	<script src="prism.js"></script>
</body>
</html>

Prism は、優れたオーサリングプラクティスを推奨するために最善を尽くしています。そのため、<code> 要素がないコードのマークアップは意味的に無効であるため、<code> 要素でのみ機能します。HTML5 の仕様によると、コード言語を定義する推奨される方法は language-xxxx クラスであり、これは Prism が使用しているものです。あるいは、Prism はより短いバージョンである lang-xxxx もサポートしています。

コードブロックをマークアップする推奨される方法 (セマンティクスと Prism の両方) は、<pre> 要素の中に <code> 要素を入れることです。次のようにします。

<pre><code class="language-css">p { color: red }</code></pre>

このパターンを使用すると、<pre> は自動的に language-xxxx クラスを取得し (まだない場合)、コードブロックとしてスタイル設定されます。

インラインコードスニペットは次のように記述します。

<code class="language-css">p { color: red }</code>

: <code> 要素 (コードブロックとインラインスニペット) 内のすべての <& 文字は、それぞれ &lt;&amp; にエスケープする必要があります。そうしないと、ブラウザが HTML タグまたはエンティティとして解釈する可能性があります。大量の HTML コードがある場合は、Unescaped Markup プラグインを使用してこれを回避できます。

言語の継承

ただし、物事を簡単にするために、Prism は言語クラスが継承されると想定しています。そのため、複数の <code> 要素が同じ言語を使用する場合、共通の祖先のいずれかに language-xxxx クラスを追加できます。このようにして、<body> または <html> 要素に language-xxxx クラスを追加することで、ドキュメント全体のデフォルト言語を定義することもできます。

言語を継承する <code> 要素のハイライトをオプトアウトするには、language-none クラスを追加します。`none` 言語を継承して、クラスを持つ要素とそのすべての子孫のハイライトを無効にすることもできます。

Show Invisiblesのようなプラグインを使用しながらハイライトをオプトアウトする場合は、代わりに`language-plain`クラスを追加してください。

手動ハイライト

要素が自動的にハイライトされないようにし、代わりに API を使用するには、DOMContentLoaded イベントが発生する前に Prism.manualtrue に設定します。Prism コアを含む <script> 要素に data-manual 属性を設定することで、これは自動的に行われます。例

<script src="prism.js" data-manual></script>

または

<script>
window.Prism = window.Prism || {};
window.Prism.manual = true;
</script>
<script src="prism.js"></script>

CDN との併用

CDN と組み合わせて使用​​する場合、必要なときに言語を自動的にロードする Autoloader プラグイン を使用することをお勧めします。

Autoloader のセットアップは次のようになります。もちろん、独自のテーマを追加することもできます。

<!DOCTYPE html>
<html>
<head>
	...
	<link href="https://{{cdn}}/prismjs@v1.x/themes/prism.css" rel="stylesheet" />
</head>
<body>
	...
	<script src="https://{{cdn}}/prismjs@v1.x/components/prism-core.min.js"></script>
	<script src="https://{{cdn}}/prismjs@v1.x/plugins/autoloader/prism-autoloader.min.js"></script>
</body>
</html>

上記のコードサンプルのリンクはプレースホルダーとして機能することに注意してください。選択した CDN への有効なリンクに置き換える必要があります。

PrismJS を提供する CDN は、たとえば cdnjsjsDelivrUNPKG です。

Webpack、Browserify、およびその他のバンドラーとの併用

バンドラーで Prism を使用するには、npm で Prism をインストールします

$ npm install prismjs

その後、バンドルに import できます

import Prism from 'prismjs';

必要な言語とプラグインのみで Prism インスタンスを簡単に構成するには、babel プラグイン babel-plugin-prismjs を使用します。これにより、ニーズを満たすために最小限の言語とプラグインをロードできます。構成の詳細については、そのプラグインのドキュメントを参照してください。

Node での使用

サーバーまたはコマンドラインで Prism を使用する場合、Prism は Node.js でも使用できます。AMP ページのように、ブラウザ側の JS をサポートしていない環境で、ハイライトされたコードを含む静的 HTML ページを生成しようとしている場合に役立ちます。

const Prism = require('prismjs');

// The code snippet you want to highlight, as a string
const code = `var data = 1;`;

// Returns a highlighted HTML string
const html = Prism.highlight(code, Prism.languages.javascript, 'javascript');

prismjs を require すると、デフォルトの言語である markupcssclikejavascript がロードされます。必要な依存関係を自動的に処理する loadLanguages() ユーティリティを使用して、さらに言語をロードできます。

const Prism = require('prismjs');
const loadLanguages = require('prismjs/components/');
loadLanguages(['haml']);

// The code snippet you want to highlight, as a string
const code = `= ['hi', 'there', 'reader!'].join " "`;

// Returns a highlighted HTML string
const html = Prism.highlight(code, Prism.languages.haml, 'haml');

: Webpack または別のバンドラーで loadLanguages() を使用しないでください。Webpack がすべての言語とプラグインを含めることになるためです。上記で説明した babel プラグインを使用してください.

: loadLanguages() は不明な言語を無視し、コンソールに警告メッセージを記録します。loadLanguages.silent = true を設定することで、警告を防ぐことができます。

サポートされている言語

これは、Prism で現在サポートされているすべての 言語のリストです。対応するエイリアスは、language-xxxx (または lang-xxxx) クラスの xxxx の代わりに使用できます。

探している言語が見つかりませんか?リクエストしてください

プラグイン

プラグインは、Prism の機能を拡張する追加のスクリプト (および CSS コード) です。以下のプラグインの多くは公式ですが、追加機能を必要としないユーザーのために Prism Core を小さく保つためにプラグインとしてリリースされています。

アセンブリは不要です。 ダウンロード ページで選択するだけです。

独自の Prism プラグインを作成するのは非常に簡単です。このリストに追加したい Prism 用のプラグインを作成しましたか?プルリクエストを送信してください

サードパーティの言語定義

サードパーティのチュートリアル

コミュニティメンバーによって、Prism をさまざまな種類のウェブサイトや構成に統合する方法を説明するチュートリアルがいくつか書かれています。

ここに記載されているチュートリアルは、正しい情報が含まれていることが確認されていないことにご注意ください。自己責任で読んでいただき、何かうまくいかない場合は、必ず公式ドキュメント(こちら)をご確認ください :)

ここにまだ含まれていない Prism に関するチュートリアルを作成しましたか?プルリクエストを送信してください!

クレジット