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
npm i element-plus @element-plus/nuxt -D
export default defineNuxtConfig({
modules: [
'@element-plus/nuxt'
],
elementPlus: { }
})
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
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
When you change the global namespace, you must change it here as well.
defaultLocale
Replace default locale, you can find locale list here
e.g. 'zh-cn'
globalConfig
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
When you modify the append-to
props in all based on ElTooltip components, you need to add the value here.
components
If there are components that are not imported automatically from Element Plus, you need to add the component name here.
e.g. ['ElSubMenu']
subComponents
A map of components that the definition file of subComponent is in its parent component.
directives
If there are directives that are not imported automatically from Element Plus, you need to add the directive name here.
imports
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
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.