Nuxt3のプロジェクトにNaive UIを導入する
概要
Nuxt3
のプロジェクトにVue3対応のUIフレームワークであるNaive UI
を導入した時の手順です。
導入方法
nuxtjs-naive-uiをインストールする
npx nuxi module add nuxtjs-naive-ui
nuxt.configに自動インポートの設定を追加する
ドキュメントのUsing Auto Import in Nuxt
セクションに記載されているとおり、自動インポートの設定をnuxt.config
に追加します。
Nuxt3はデフォルトでvite
を使用しているため、vite.plugins
への追加となります。
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
modules: ['nuxtjs-naive-ui'],
// 下記設定を追加
vite: {
plugins: [
AutoImport({
imports: [
'vue',
{
'naive-ui': [
'useDialog',
'useMessage',
'useNotification',
'useLoadingBar'
]
}
]
}),
Components({
resolvers: [NaiveUiResolver()]
})
],
},
})
各コンポーネントで使用する
nuxt.config
に自動インポートの設定をしているため、各コンポーネントでの個別インポートは不要です。n-button
など使いたいコンポーネントをtemplate
内に記載すれば使えます。
<template>
<div class="wrapper">
<n-button type="success">Click Me</n-button>
<n-button type="primary">Primary</n-button>
<!-- ...略 -->
コマンドの詳細
nuxtjs-naive-ui
をインストールするに使ったコマンドを詳細に見ていきます。
npx nuxi module add nuxtjs-naive-ui
npx
npmがpackage manager
の名前の通り、パッケージを管理する役割なのに対し、npxはパッケージを実行する役割を持ちます。
npxは、パッケージのインストール・実行・アンインストールをセットにしたコマンドです。実行のためにいちいちパッケージをグローバルにインストールせずにコマンドを実行できます。
npmを使う場合は、nuxiを一旦インストールしてからnuxiコマンドを実行する必要があります。
npm nuxi -g
nuxi module add ***
一方で、npxを使えば、インストールと実行がセットで行えます。しかも、アンインストールまでやってくれるので、作業環境を汚さずに使えます。
npx nuxi module add ***
nuxi
Nuxt開発で使用するCLIツールです。
nuxi module add
このコマンドを実行すると、下記が行われます。
- 指定したパッケージをインストールする
-
nuxt.config
ファイルに設定を追加する
nuxi module add nuxtjs-naive-ui
上記コマンドを実行すると、nuxtjs-naive-ui
がインストールされ、nuxt.config.ts
のmodules
にnuxtjs-naive-ui
が追加されます。
export default defineNuxtConfig({
modules: ['nuxtjs-naive-ui'], // この部分が自動的に追加されます。
})
補足
今回は、ドキュメントのNuxt公式の手順に従いnuxtjs-naive-ui
をインストール&使用しました。ですが、普通にnaive-ui
をインストールして、各コンポーネントで直接インポートして使用することも可能です。
npm i -D naive-ui
<template>
<div class="wrapper">
<n-button type="success">Click Me</n-button>
<n-button type="primary">Primary</n-button>
<!-- ...略 -->
</template>
<script setup>
// コンポーネント内での個別インポート
import { NButton } from 'naive-ui'
</script>
nuxtjs-naive-ui
では、自動インポートを前提としているようで、個別インポートはできませんでした(私が少し試した限りですが)。個別インポートしたい場合は、nuxtjs-naive-ui
ではなく、naive-ui
を使った方が良さそうです。
Discussion