NuxtでPrimeVueをインストール

NuxtプロジェクトでPrimeVueを設定する。

PrimeVueは、公式のnpmレジストリでダウンロードできるほか、公式のnuxt-primevueモジュールもダウンロードできます。


# Using npm
npm install primevue
npm install --save-dev @primevue/nuxt-module

# Using yarn
yarn add primevue
yarn add --dev @primevue/nuxt-module

# Using pnpm
pnpm add primevue
pnpm add -D @primevue/nuxt-module

nuxt.configファイルで、@primevue/nuxt-moduleをmodulesセクションに追加し、モジュールの設定のためにprimevueオブジェクトを定義します。


export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        /* Configuration */
    }
})

PrimeVueには、スタイル付きと非スタイルの2つのスタイルモードがあります。始めたばかりの場合は、スタイル付きモードから始めるのが良いでしょう。

スタイル付きモードでは、あらかじめスキンされたコンポーネントが提供され、デフォルトのテーマはAuraで、プライマリカラーはエメラルドです。詳細については、スタイル付きモードのドキュメントを参照してください。

テーマはPrimeVueにデフォルトで含まれていないため、@primevue/themesアドオンパッケージをインストールしてください。


# Using npm
npm install @primevue/themes

# Using yarn
yarn add @primevue/themes

# Using pnpm
pnpm add @primevue/themes

Auraのようなテーマを使用するようにモジュールを設定します。


import Aura from '@primevue/themes/aura';

export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        options: {
            theme: {
                preset: Aura
            }
        }
    }
})

非スタイルモードでは、コンポーネントにCSSが含まれていないため、コンポーネントを自分でスタイルする必要があります。これは、PrimeVueの上に独自のUIライブラリを構築する場合に特に便利です。詳細と例については、非スタイルモードのドキュメントを参照してください。


export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        options: {
            unstyled: true
        }
    }
})

nuxt-primevueモジュールはコンポーネントを自動的に登録するため、すぐに使い始めることができます。


<Button label="Check" icon="pi pi-check" />

このモジュールは、デフォルトでPrimeVueプラグインをインストールします。NuxtプラグインなどでPrimeVueを手動で設定する場合は、このオプションを無効にしてください。


primevue: {
    usePrimeVue: true
}

PrimeVueの主な設定。詳細については、設定ドキュメントを参照してください。


import Aura from '@primevue/themes/aura';

export default defineNuxtConfig({
    modules: [
        '@primevue/nuxt-module'
    ],
    primevue: {
        options: {
            ripple: true,
            inputVariant: 'filled',
            theme: {
                preset: Aura,
                options: {
                    prefix: 'p',
                    darkModeSelector: 'system',
                    cssLayer: false
                }
            }
        }
    }
})

自動インポート機能は、ツリーシェーキングをサポートしてコンポーネントを自動的に登録します。デフォルトはtrueです。無効にした場合は、手動登録のためにcomponentsおよびdirectivesのinclude/excludeオプションを使用してください。


primevue: {
    autoImport: true|false
}

登録にプレフィックスを追加するには、componentsおよびdirectivesprefixを使用します。


primevue: {
    autoImport: true|false,
    components: {
        prefix: 'org'
    },
    directives: {
        prefix: 'org'
    }
}

グローバルパススルーインポートパスを設定します。


primevue: {
    importPT: { from: '@/passthrough/mycustompt.js')}
}

mycustompt.jsファイルは、構成を定義し、エクスポートします。


const MyCustomPT = {
    ...
    button: {
        root: 'my-button',
       ...
    },
    ...
}

export default MyCustomPT;

スタイル付きモードでのテーマのカスタマイズ用のテーマ構成パスを設定します。


primevue: {
    importTheme: { from: '@/themes/mytheme.js' },
}

mytheme.jsファイルには、テーマの構成が含まれています。


import { definePreset } from '@primevue/themes';
import Aura from '@primevue/themes/aura';

const MyPreset = definePreset(Aura, {
    semantic: {
        primary: {
            50: '{indigo.50}',
            100: '{indigo.100}',
            200: '{indigo.200}',
            300: '{indigo.300}',
            400: '{indigo.400}',
            500: '{indigo.500}',
            600: '{indigo.600}',
            700: '{indigo.700}',
            800: '{indigo.800}',
            900: '{indigo.900}',
            950: '{indigo.950}'
        }
    }
});

export default {
    preset: MyPreset,
    options: {
        darkModeSelector: '.p-dark'
    }
};


autoImportが無効になっている場合は、手動登録にincludeおよびexcludeを使用します。

インポートおよび登録するコンポーネントは、文字列配列を使用してincludeオプションで定義されます。値が無視されるか、*エイリアスを使用して設定されている場合、すべてのコンポーネントが登録されます。


primevue: {
    components: {
        include: ['Button', 'DataTable']
    }
}

すべてのコンポーネントがインポートされる場合、特定のコンポーネントをexcludeオプションで除外することができます。


primevue: {
    components: {
        include: '*',
        exclude: ['Galleria', 'Carousel']
    }
}

デフォルトでは、互換性の理由から、ChartおよびEditorコンポーネントは除外されます。含めるには、excludeオプションを空のリストに設定するだけです。


primevue: {
    components: {
        exclude: []
    }
}

登録されたコンポーネント名にプレフィックスを付けるには、prefixオプションを使用します。


primevue: {
    components: {
        prefix: 'Prime'
        include: ['Button', 'DataTable']    /* Used as <PrimeButton /> and <PrimeDataTable /> */
    }
}

コンポーネントの登録は、インポートメタデータを表すオブジェクトを取得するname関数を実装することで、さらにカスタマイズできます。nameはコンポーネントのラベル、asはデフォルトのエクスポート名、fromはインポートパスです。


primevue: {
    components: {
        name: ({ name, as, from }) => {
            return name === 'Button' ? `My${name}` : name;
        },
        include: ['Button', 'DataTable']    /* Used as <MyButton /> and <DataTable /> */
    }
}

autoImportが無効になっている場合は、手動登録にincludeおよびexcludeを使用します。

インポートおよび登録するディレクティブの名前は、includeプロパティを使用して指定します。値が無視されるか、*エイリアスを使用して設定されている場合、すべてのディレクティブが登録されます。


primevue: {
    directives: {
        include: ['Ripple', 'Tooltip']
    }
}

コンポーネントと同様に、特定のディレクティブを除外したり、名前の登録をカスタマイズしたりできます。


primevue: {
    directives: {
        include: '*',
        exclude: ['Ripple']
    }
}


primevue: {
    directives: {
        prefix: 'p'
        include: ['Ripple', 'Tooltip']    /* Used as v-pripple and v-ptooltip */
    }
}

使用するコンポーザブルを決定します。デフォルト値が無視されるか、*として設定されている場合は、すべてのコンポーザブルがインポートされます。


primevue: {
    composables: {
        include: ['useStyle']
    }
}

さまざまなオプションを使用したNuxtベースのサンプルは、PrimeVueのサンプルリポジトリで入手できます。