Astroプロジェクトにastro-expressive-codeを導入し、コードブロックをスタイリングする方法を紹介します。
前提
- Astroプロジェクトを作成していること。
- MDX(Markdown+JSX)でページを作成していること。
expressive-codeインストール
Astroプロジェクトのディレクトリに移動し、astro-expressive-codeをインストールします。
以下のコマンドを実行してパッケージをインストールします。
npm install astro-expressive-codeastro.config.mjs編集
プロジェクト配下のastro.config.mjsに、astro-expressive-codeプラグインを追加します。
以下にコード例を示します。
import { defineConfig } from 'astro/config';import expressiveCode from "astro-expressive-code";import mdx from "@astrojs/mdx";
export default defineConfig({ integrations: [ expressiveCode({ theme: 'github-dark', }), mdx() ],});これで、astro-expressive-codeがAstroプロジェクトに導入され、コードブロックのスタイリングが有効になります。
以下コマンドでAstroプロジェクトを起動して、コードブロックの表示が変わったことをご確認ください。
npm run devコードブロックの表示
コマンドに関するコードブロックの表示例を示します。
基本的な使い方
コードブロックは```で値を囲うことで利用できます。
```コードブロックです```表示例
コードブロックです形式を指定する
プレーンテキストやプログラミング言語、コマンド等の形式を指定することができます。
```plaintextこんにちは!```
```pythonnumbers = [1, 2, 3, 4, 5]for num in numbers: print(num)```
```bashecho "test"```表示例(プレーンテキスト)
こんにちは!表示例(Python)
numbers = [1, 2, 3, 4, 5]for num in numbers: print(num)表示例(コマンド)
echo "test"タイトルを表示する
コードブロックにタイトルをつける例です。
プロジェクトのmdxファイルに、titleを指定してコードブロックを作成します。
```bash title="実行コマンド"echo 'test'```表示例
以下のように、タイトル付きのスタイリングされたコードブロックが表示されます。
echo 'test'フレームを指定する
```plaintext title="ソースコード" frame="code"コードブロックです``````plaintext title="ターミナル" frame="terminal"コードブロックです```表示例(コード)
コードブロックです表示例(ターミナル)
コードブロックです特定の行をハイライトする
特定の行をハイライトする例を示します。
プロジェクトのmdxファイルに以下のようなコードブロックを指定します。
```javascript title="test.js" {2}var value = aaa;alert(value);```表示例
以下のように、2行目のコードがハイライトされて表示されます。
var value = aaa;alert(value);行番号を表示する
line-numbersインストール
コードブロックに行番号を表示するにはplugin-line-numbersプラグインをインストールします。
npm install @expressive-code/plugin-line-numbers以下のようにastro.config.mjsのコードを修正します。
import { defineConfig } from 'astro/config';import expressiveCode from 'astro-expressive-code';import { pluginLineNumbers } from '@expressive-code/plugin-line-numbers';import mdx from '@astrojs/mdx';
export default defineConfig({ integrations: [ expressiveCode({ theme: 'github-dark', plugins: [pluginLineNumbers()], }), mdx(), ],});行番号の表示・非表示
行番号を表示する場合は、showLineNumbers=trueを指定し、非表示にする場合はshowLineNumbers=falseを指定します。
※showLineNumbers未指定の場合は、行番号が表示されます。
```plaintext showLineNumbers=true行番号を表示します。行番号を表示します。行番号を表示します。```
```plaintext showLineNumbers=false行番号を表示しません。行番号を表示しません。行番号を表示しません。```表示例(行番号を表示)
行番号を表示します。行番号を表示します。行番号を表示します。表示例(行番号を非表示)
行番号を表示しません。行番号を表示しません。行番号を表示しません。オプションまとめ
紹介したオプションをまとめると以下の通りになります。
| オプション | 説明 |
|---|---|
title | コードブロックのタイトルを指定する |
frame | コードブロックのフレームを指定する(auto, code, terminal, none) |
showLineNumbers | 行番号を表示する(true で有効、false で無効) |
{n} | 特定の行をハイライトする(例:{1} で1行目をハイライト) |
以上で本記事の解説を終わります。
よいITライフを!