Nuxt Nation カンファレンスが近づいています。11月12日~13日に参加しましょう。

@nuxtjs/svg-sprite

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

SVG Spriteモジュール

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.jsbuildModulesセクションに追加します。

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

~/assets/sprite/svg/に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.js内のsvgSpriteオプションで更新できます

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

小道具

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

統合

ストーリーブック

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

開発

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

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

ライセンス

MITライセンス著作権(c)Nuxtコミュニティ-Ahad Birang