@nuxtjs/svg-sprite

Nuxt で SVG ファイルを使用する最適化された簡単な方法

SVGスプライトモジュール

npm (scoped with tag)npm

Nuxt.js で SVG ファイルを使用する最適化された簡単な方法

スプライトは、速度向上、一貫した開発ワークフローの維持、アイコン作成の高速化に役立ちます。SVGスプライトは通常、同様の形状や形式のアイコンを使用して作成されますが、大規模なグラフィックは一度限りのアプリケーションです。

デモ: https://codesandbox.io/s/github/nuxt-community/svg-sprite-module/

⚠️ 注意: SVGスプライトはIEでは動作しません。IEをサポートしたい場合は、svg4everybodyを使用できます。方法については、この問題をご覧ください。

🌈 注意: 単一のSVGアイコンをロードし、スプライトを作成したくない場合は、Nuxt SVGモジュールを使用してください。Nuxt.js用のSVGモジュールは、提供するリソースクエリに応じて、.svgファイルを複数の方法でインポートできます。

インストール

yarn add @nuxtjs/svg-sprite
# or
npm i @nuxtjs/svg-sprite

使用方法

@nuxtjs/svg-spritenuxt.config.js の buildModules セクションに追加します。

{
  buildModules: [
    '@nuxtjs/svg-sprite',
  ],
  svgSprite: {
    // manipulate module options
  }
}

svgファイルを ~/assets/sprite/svg/ に配置し(例: sample.svg)、グローバルに登録された svg-icon コンポーネントで画像を使用します。

<svg-icon name="sample" />

異なるスプライトを作成するには、~/assets/sprite/svg/ 内にカスタムディレクトリを作成し、その中にSVGファイルを配置して、アイコン名の前にディレクトリ名を配置します(例: ~/assets/sprite/svg/my-sprite/my-image.svg)。

<svg-icon name="my-sprite/my-image" />

モジュールは、すべてのアイコンを一覧表示するページを作成します。デフォルトでは、このページは /_icons パスで表示できます。
注: このページは dev モードで作成されるため、本番環境では表示できません。

オプション

モジュールのデフォルトオプション

オプションデフォルト説明
input~/assets/sprite/svg元のSVGファイルのディレクトリ
output~/assets/sprite/gen生成されたスプライトを保存するディレクトリ
defaultSpriteiconsデフォルトのスプライト名(デフォルトのスプライトは、input ディレクトリに直接配置されたすべてのSVGで構成されます)
elementClassiconすべての <svg-icon> インスタンスのグローバルクラス
spriteClassPrefixsprite-スプライト固有のクラスのプレフィックス
publicPathnullスプライトのカスタム公開パスを指定します。
iconsPath_iconsアイコンリストページのカスタムパス(このページを無効にするには、このオプションに false または null を渡します)
svgoConfignullSVGO のカスタム設定オブジェクト、SVGO 設定のカスタマイズ方法

nuxt.config.jssvgSprite オプションで更新できます。

export default {
  buildModules: ['@nuxtjs/svg-sprite'],
  svgSprite: {
    input: '~/assets/svg/'
  }
}

プロップス

Prop説明
nameSPRITE_NAME/ICON_NAME 形式のアイコンパス。SPRITE_NAME はデフォルトのスプライトでは省略できます。
titleアイコンのアクセシビリティタイトル。このプロパティは <svg> タグ内の <title> タグに変換されます。
descアイコンのアクセシビリティ説明。このプロパティは <svg> タグ内の <desc> タグに変換されます。

統合

ストーリーブック

このモジュールは、プロジェクトで利用可能なアイコンをリストして検索するストーリーを提供します。stories ディレクトリの下にストーリーが表示されます。@nuxtjs/storybook を使用している場合、ストーリーブックの Modules セクションの下に SvgSprites のストーリーが表示されます。スプライトは、Storybook の modules オプションを使用してストーリーを無効化/非表示にしない限り、ストーリーブックに表示されます。

開発

  • このリポジトリをクローンする
  • yarn install または npm install を使用して依存関係をインストール
  • npm run devを使用して開発サーバーを開始します

CodeSandBox からも直接貢献できます: https://codesandbox.io/s/github/nuxt-community/svg-sprite-module/

ライセンス

MIT ライセンス Copyright (c) Nuxt Community - Ahad Birang