Feylo

Nuxtモジュールのおすすめ

このサイトの製作で初めてNuxtを使用して作りました。その際に、Nuxtモジュールを使用して便利だったのでおすすめのNuxtモジュールについて紹介します!

この記事でわかること

  • Nuxtモジュールについて
  • このサイトで使用しているNuxtモジュール
  • おすすめのNuxtモジュール

Nuxtモジュールとは

現在、273個以上が提供されてるNuxtプロジェクトを強化するモジュール・ライブラリです。

機能などを自作するのもいいですが、公式サイトを見て似たような機能があれば楽に導入することができます。

nuxt.com
nuxt.com favicon
nuxt.com favicon
nuxt.com

インストール方法

公式サイトから使用したいモジュールが見つかったら、インストール方法を確認しましょう。ターミナルでnpmなどでインストールします。

使用方法

Nuxtモジュールを使用するには、nuxt.config.jsにモジュールを追加します。

nuxt.config.js
export default defineNuxtConfig({
  modules: [
    // ここにモジュールを追加
  ],
});

以上でNuxtモジュールが使用できるようになります。

おすすめのNuxtモジュール

それでは、このサイトで使用しているNuxtモジュールを紹介します!

@nuxt/content

Nuxt Contentを利用することで、アプリケーションのコンテンツをシンプルに管理できます。ContentフォルダにMarkdown,YAML,CSV,JSONでファイルを作成することで、それらをNuxtのページに表示することができます。SQLデータベースに影響を受けており、コンテンツから柔軟にページを生成できます。

また、VueコンポーネントをMarkdownに埋め込むことができ、表現豊かなブログやドキュメントサイトを作成することができます。このサイトの根幹になっています!

@nuxt/content · Nuxt Modules
The file-based CMS with support for Markdown, YAML, JSON.
@nuxt/content · Nuxt Modules favicon
@nuxt/content · Nuxt Modules favicon
nuxt.com
@nuxt/content · Nuxt Modules
@nuxt/content · Nuxt Modules

@nuxt/eslint

Nuxt用のオールインワンESLint統合になります。プロジェクトに応じたESLintを設定でき、オプションで開発サーバーと並行してESLintチェックを実行する機能も提供します。ESLintをNuxtで使用する場合は入れておきましょう。

@nuxt/eslint · Nuxt Modules
Project-aware, easy-to-use, extensible and future-proof ESLint integration.
@nuxt/eslint · Nuxt Modules favicon
@nuxt/eslint · Nuxt Modules favicon
nuxt.com
@nuxt/eslint · Nuxt Modules
@nuxt/eslint · Nuxt Modules

@nuxt/fonts

NuxtプロジェクトにGoogleフォントを簡単に追加できます。このサイトではGoogleフォントのみ使用していますが、ローカルにあるフォントも使用できるみたいです。

使用方法は簡単で、cssでfont-familyfont-weightで指定するだけです。
このサイトでは、ここで下記のようにユーティリティで定義して利用するようにしています。

font.scss
.ff-zen-kaku-gothic-500 {
  font-family: "Zen Kaku Gothic New", sans-serif;
  font-weight: 500;
}

.ff-zilla-slab-700-italic {
  font-family: "Zilla Slab", serif;
  font-weight: 700;
  font-style: italic;
}
@nuxt/fonts · Nuxt Modules
Add custom web fonts with performance in mind.
@nuxt/fonts · Nuxt Modules favicon
@nuxt/fonts · Nuxt Modules favicon
nuxt.com
@nuxt/fonts · Nuxt Modules
@nuxt/fonts · Nuxt Modules

@nuxt/icon

Nuxtプロジェクトにアイコンを簡単に追加できます。アイコンはIconifyを使用しているので、利用したいアイコンを探したら、Iconコンポーネントのnameにアイコン名を指定するだけで表示することができます。

Iconコンポーネント
<Icon name="uil:github" size="1.5rem" style="color: black" />

サイズを変えたいときは、sizeで指定します。また、アイコンの色を変えたいときはstyleで設定することができます。

@nuxt/icon · Nuxt Modules
Icon module for Nuxt with 200,000+ ready to use icons from Iconify.
@nuxt/icon · Nuxt Modules favicon
@nuxt/icon · Nuxt Modules favicon
nuxt.com
@nuxt/icon · Nuxt Modules
@nuxt/icon · Nuxt Modules

nuxt-marquee

このサイトのTopページなどに、テキストが流れ続けるアニメーションを実装するために使用しています。一例としてnuxt-marqueeを使用した見出しのコンポーネントを下記に紹介します。

Marqueeコンポーネント
<script setup lang="ts">
interface Props {
  level?: 1 | 2 | 3 | 4 | 5 | 6;
  text?: string;
  marqueeSpeed?: number;
  marqueeDirection?: 'left' | 'right';
  marqueePauseOnHover?: boolean;
};

const props = withDefaults(defineProps<Props>(), {
  level: 2,
  text: '',
  marqueeSpeed: 40,
  marqueeDirection: 'left',
  marqueePauseOnHover: false,
});

const tag = `h${props.level || 2}`;
</script>

<template>
  <div class="heading__wrap">
    <div class="heading__deco ff-open-sans-700">
      <NuxtMarquee
        :auto-fill="true"
        :speed="40"
        :direction="props.marqueeDirection"
        :pause-on-hover="props.marqueePauseOnHover"
      >
        <slot />
      </NuxtMarquee>
    </div>
    <component :is="tag" class="heading container ff-open-sans-700">
      <slot />
    </component>
    <p v-if="text" class="text container">{{ text }}</p>
  </div>
</template>
nuxt-marquee · Nuxt Modules
A lightweight Nuxt 3 module that harnesses the power of CSS animations to create silky smooth marquees.
nuxt-marquee · Nuxt Modules favicon
nuxt-marquee · Nuxt Modules favicon
nuxt.com
nuxt-marquee · Nuxt Modules
nuxt-marquee · Nuxt Modules

まとめ

Nuxtプロジェクトで便利に開発できるNuxtモジュールを紹介しました。
Nuxtモジュールは、公式サイトから探していけば、それっぽいものが見つかると思います。

ぜひみなさんも利用してみてください!

Share

Random

ランダムな記事