37% OFF during Black Friday at Mastering Nuxt.

element-plus
@element-plus/nuxt

A Vue 3 based component library for designers and developers

Element Plus Nuxt

Element Plus module for Nuxt

Features

  • Automatically import components and styles on demand.
  • Automatically import directives and styles on demand.
  • Automatically import icons from @element-plus/icons-vue.
  • Automatically import of ElMessage, ElNotification and other methods.
  • Automatically inject the ID_INJECTION_KEY and ZINDEX_INJECTION_KEY into Vue.
  • Automatically inject the teleport markup into the correct location in the final page HTML.

Installation

!WARNING Since the dayjs used internally by element-plus is not a JavaScript modules, in order to ensure that it can be converted into a JavaScript modules before startup, you need to add a .npmrc file to the root directory of the project and add the following configuration:

shamefully-hoist=true

Or install the dayjs dependency separately.

npx nuxi@latest module add element-plus
# or
npm i element-plus @element-plus/nuxt -D
export default defineNuxtConfig({
  modules: [
    '@element-plus/nuxt'
  ],
  elementPlus: { /** Options */ }
})

Usage

<template>
  <el-button @click="ElMessage('hello')">button</el-button>
  <ElButton :icon="ElIconEditPen" type="success">button</ElButton>
  <LazyElButton type="warning">lazy button</LazyElButton>
</template>

Reference Nuxt documentation and playground use.

Options

importStyle

  • Type: 'css' | 'scss' | boolean
  • Default: css

import style css or sass(scss) with components, disable automatically import styles with false.

themes

  • Type: array

A list of themes that require import styles automatically.

e.g. ['dark']

icon

  • Type: string | false
  • Default: ElIcon

Icon prefix name, disable automatically import icon with false.

namespace

  • Type: string
  • Default: el

When you change the global namespace, you must change it here as well.

defaultLocale

  • Type: string

Replace default locale, you can find locale list here

e.g. 'zh-cn'

globalConfig

  • Type: object

Set global configuration, such as modifying the default size and z-index of the component.

e.g. { size: 'small', zIndex: 3000 }

injectionID

  • Type: object
  • Default: { prefix: 1024, current: 0 }

Automatically inject the ID_INJECTION_KEY into Vue.

injectionZIndex

  • Type: object
  • Default: { current: 0 }

Automatically inject the Z_INDEX_INJECTION_KEY into Vue.

appendTo

  • Type: array

When you modify the append-to props in all based on ElTooltip components, you need to add the value here.

components

  • Type: array

If there are components that are not imported automatically from Element Plus, you need to add the component name here.

e.g. ['ElSubMenu']

subComponents

  • Type: object

A map of components that the definition file of subComponent is in its parent component.

directives

  • Type: object

If there are directives that are not imported automatically from Element Plus, you need to add the directive name here.

imports

  • Type: array

If you wish to add automatically import content from Element Plus, you can add it here.

e.g.

[
  ['useLocale', 'es/hooks/use-locale/index.mjs'],
  [['castArray', 'unique'], 'es/utils/arrays.mjs']
],

noStylesComponents

  • Type: array

When a component incorrectly loads styles, you need to add the component name here.

include

  • Type: array
  • Default: [ /\.vue$/, /\.vue\?vue/, /\.vue\?v=/, /\.((c|m)?j|t)sx?$/]

Include files that need to automatically import styles.

exclude

  • Type: array
  • Default: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/]

Exclude files that do not require the automatic import of styles.

Template

element-plus-nuxt-starter

Development

  • Run pnpm i to install the dependencies.
  • Run pnpm dev:prepare to generate type stubs.
  • Run pnpm dev to start playground in development mode.
  • Run pnpm dev:build to build playground.
  • Run pnpm dev:start to locally preview playground.
  • Run pnpm build to build this project.