【Astro】Expressive Codeでコードブロックを使う方法

【Astro】Expressive Codeでコードブロックを使う方法

記事の文字数:1902

Astroプロジェクトにastro-expressive-codeを導入し、コードブロックをスタイリングする方法を紹介します。基本的な使い方から形式・タイトル・フレームの指定方法、行番号の表示を可能にするplugin-line-numbersプラグインについても解説します。


スポンサーリンク

Astroプロジェクトにastro-expressive-codeを導入し、コードブロックをスタイリングする方法を紹介します。

前提

  • Astroプロジェクトを作成していること。
  • MDX(Markdown+JSX)でページを作成していること。

expressive-codeインストール

Astroプロジェクトのディレクトリに移動し、astro-expressive-codeをインストールします。
以下のコマンドを実行してパッケージをインストールします。

実行コマンド
npm install astro-expressive-code

astro.config.mjs編集

プロジェクト配下のastro.config.mjsに、astro-expressive-codeプラグインを追加します。 以下にコード例を示します。

astro.config.mjs
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

コードブロックの表示

コマンドに関するコードブロックの表示例を示します。

基本的な使い方

コードブロックは```で値を囲うことで利用できます。

index.mdx
```
コードブロックです
```

表示例

コードブロックです

形式を指定する

プレーンテキストやプログラミング言語、コマンド等の形式を指定することができます。

index.mdx
```plaintext
こんにちは!
```
```python
numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)
```
```bash
echo "test"
```

表示例(プレーンテキスト)

こんにちは!

表示例(Python)

numbers = [1, 2, 3, 4, 5]
for num in numbers:
print(num)

表示例(コマンド)

Terminal window
echo "test"

タイトルを表示する

コードブロックにタイトルをつける例です。
プロジェクトのmdxファイルに、titleを指定してコードブロックを作成します。

index.mdx
```bash title="実行コマンド"
echo 'test'
```

表示例

以下のように、タイトル付きのスタイリングされたコードブロックが表示されます。

実行コマンド
echo 'test'

フレームを指定する

index.mdx
```plaintext title="ソースコード" frame="code"
コードブロックです
```
```plaintext title="ターミナル" frame="terminal"
コードブロックです
```

表示例(コード)

ソースコード
コードブロックです

表示例(ターミナル)

ターミナル
コードブロックです

特定の行をハイライトする

特定の行をハイライトする例を示します。
プロジェクトのmdxファイルに以下のようなコードブロックを指定します。

index.mdx
```javascript title="test.js" {2}
var value = aaa;
alert(value);
```

表示例

以下のように、2行目のコードがハイライトされて表示されます。

test.js
var value = aaa;
alert(value);

行番号を表示する

line-numbersインストール

コードブロックに行番号を表示するにはplugin-line-numbersプラグインをインストールします。

Terminal window
npm install @expressive-code/plugin-line-numbers

以下のようにastro.config.mjsのコードを修正します。

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未指定の場合は、行番号が表示されます。

index.mdx
```plaintext showLineNumbers=true
行番号を表示します。
行番号を表示します。
行番号を表示します。
```
```plaintext showLineNumbers=false
行番号を表示しません。
行番号を表示しません。
行番号を表示しません。
```

表示例(行番号を表示)

行番号を表示します。
行番号を表示します。
行番号を表示します。

表示例(行番号を非表示)

行番号を表示しません。
行番号を表示しません。
行番号を表示しません。

オプションまとめ

紹介したオプションをまとめると以下の通りになります。

オプション説明
titleコードブロックのタイトルを指定する
frameコードブロックのフレームを指定する(auto, code, terminal, none
showLineNumbers行番号を表示する(true で有効、false で無効)
{n}特定の行をハイライトする(例:{1} で1行目をハイライト)

以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top