1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import { resolve } from 'path'
- import Vue from '@vitejs/plugin-vue'
- import VueJsx from '@vitejs/plugin-vue-jsx'
- import WindiCSS from 'vite-plugin-windicss'
- import progress from 'vite-plugin-progress'
- import EslintPlugin from 'vite-plugin-eslint'
- import PurgeIcons from 'vite-plugin-purge-icons'
- import { ViteEjsPlugin } from 'vite-plugin-ejs'
- import ElementPlus from 'unplugin-element-plus/vite'
- import AutoImport from 'unplugin-auto-import/vite'
- import Components from 'unplugin-vue-components/vite'
- import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
- import viteCompression from 'vite-plugin-compression'
- import vueSetupExtend from 'vite-plugin-vue-setup-extend'
- import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
- import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
- export function createVitePlugins(VITE_APP_TITLE: string) {
- const root = process.cwd()
-
- function pathResolve(dir: string) {
- return resolve(root, '.', dir)
- }
- return [
- Vue(),
- VueJsx(),
- WindiCSS(),
- progress(),
- PurgeIcons(),
- vueSetupExtend(),
- ElementPlus(),
- AutoImport({
- include: [
- /\.[tj]sx?$/,
- /\.vue$/,
- /\.vue\?vue/,
- /\.md$/
- ],
- imports: [
- 'vue',
- 'vue-router',
- {
- '@/hooks/web/useI18n': ['useI18n'],
- '@/hooks/web/useXTable': ['useXTable'],
- '@/hooks/web/useMessage': ['useMessage'],
- '@/hooks/web/useVxeCrudSchemas': ['useVxeCrudSchemas'],
- '@/utils/formRules': ['required'],
- '@/utils/dict': ['DICT_TYPE']
- }
- ],
- dts: 'src/types/auto-imports.d.ts',
- resolvers: [ElementPlusResolver()],
- eslintrc: {
- enabled: false,
- filepath: './.eslintrc-auto-import.json',
- globalsPropValue: true
- }
- }),
- Components({
-
- dirs: ['src/components'],
-
- extensions: ['vue', 'md'],
-
- deep: true,
- include: [/\.vue$/, /\.vue\?vue/],
-
- dts: 'src/types/auto-components.d.ts',
-
- resolvers: [ElementPlusResolver()],
- exclude: [/[\\/]node_modules[\\/]/]
- }),
- EslintPlugin({
- cache: false,
- include: ['src/**/*.vue', 'src/**/*.ts', 'src/**/*.tsx']
- }),
- VueI18nPlugin({
- runtimeOnly: true,
- compositionOnly: true,
- include: [resolve(__dirname, 'src/locales/**')]
- }),
- createSvgIconsPlugin({
- iconDirs: [pathResolve('src/assets/svgs')],
- symbolId: 'icon-[dir]-[name]',
- svgoOptions: true
- }),
- viteCompression({
- verbose: true,
- disable: false,
- threshold: 10240,
- algorithm: 'gzip',
- ext: '.gz',
- deleteOriginFile: false
- }),
- ViteEjsPlugin({
- title: VITE_APP_TITLE
- })
- ]
- }
|