Table of Contents
はじめに
astro-iconはAstroプロジェクトでSVGアイコンを簡単に使用できるようにするためのライブラリです。 また、Iconify1 のアイコンセットを使用することも可能です。
このブログでも採用しているのですが、コード量が減る上に、Tailwind CSSでカスタマイズできるのでかなり便利です。
インストール方法
astro-icon本体のインストール
$ npx astro add astro-icon
Iconifyを利用するためには、npm install @iconify-json/*
でアイコンセットごとにインストールする必要があります。
アイコンセットは公式のIcon Set Explorerまたは
Icônesから検索できます。
なお、赤枠部分が*
に入ります。

$ npm install @iconify-json/mdi
使い方
アイコンセットを使う
---import { Icon } from 'astro-icon/components'---
<Icon name="mdi:account" />
ローカルのsvgファイルを使う
ローカルのsvgファイルを使う場合、デフォルトフォルダはsrc/icons
になっています。
---import { Icon } from 'astro-icon/components'---
<!-- `/src/icons/account.svg`を読み取る --><Icon name="account" />
<!-- `/src/icons/hoge/account.svg`を読み取る --><Icon name="hoge/account" />
デフォルトフォルダの変更
デフォルトフォルダを変更したい場合はastro.config.mjs
で。
import { defineConfig } from "astro/config";import icon from "astro-icon";
export default defineConfig({ // ... integrations: [ icon({ // `src/assets/icons`にする iconDir: "src/assets/icons", }), ],});
スタイリング方法
styleタグを使う
<Icon name="account" />
<!-- Icon全体に適用したい場合 --><style> [data-icon] { font-size: 2rem; color: var(--brand-color); }</style>
<!-- nameで絞りたい場合 --><style> [data-icon="account"] { font-size: 2rem; color: var(--brand-color); }</style>
Tailwind CSSを使う
まずは、@astrojs/tailwindをいれる。
基本的に質問にはy
でOK。
$ npx astro add tailwind
あとは通常の使い方と同じ!
<Icon name="account" class="text-xl text-green-600" />
Footnotes
-
オープンソースのアイコンセットを標準化して配布するプロジェクトです。 ↩