1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
| import path from 'path'
| import { resolve } from 'path'
| import Vue from '@vitejs/plugin-vue'
| import eslintPlugin from 'vite-plugin-eslint'
| import VueJsx from '@vitejs/plugin-vue-jsx'
| import viteStylelint from 'vite-plugin-stylelint'
| import {
| createStyleImportPlugin,
| ElementPlusSecondaryResolve
| } from 'vite-plugin-style-import-secondary'
| import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
| import svgLoader from 'vite-svg-loader'
| import AutoImport from 'unplugin-auto-import/vite'
| import Components from 'unplugin-vue-components-secondary/vite'
| import { ElementPlusResolver } from 'unplugin-vue-components-secondary/resolvers'
| const root = process.cwd()
|
| export function pathResolve(dir: string) {
| return resolve(root, '.', dir)
| }
| export default {
| base: './',
| plugins: [
| Vue(),
| svgLoader({
| svgo: false,
| defaultImport: 'component' // or 'raw'
| }),
| VueJsx(),
| createStyleImportPlugin({
| resolves: [ElementPlusSecondaryResolve()],
| libs: [
| {
| libraryName: 'element-plus-secondary',
| esModule: true,
| resolveStyle: name => {
| return `element-plus-secondary/es/components/${name.substring(3)}/style/css`
| }
| }
| ]
| }),
| AutoImport({
| resolvers: [ElementPlusResolver()]
| }),
| Components({
| resolvers: [ElementPlusResolver()]
| }),
| VueI18nPlugin({
| runtimeOnly: false,
| compositionOnly: true,
| include: [resolve(__dirname, 'src/locales/**')]
| }),
| eslintPlugin({
| cache: false,
| include: [
| 'src/**/*.ts',
| 'src/**/*.tsx',
| 'src/**/*.js',
| 'src/**/*.vue',
| 'src/*.ts',
| 'src/*.js',
| 'src/*.vue'
| ]
| }),
| viteStylelint()
| ],
| css: {
| preprocessorOptions: {
| less: {
| modifyVars: {
| hack: `true; @import (reference) "${path.resolve('src/style/variable.less')}";`
| },
| javascriptEnabled: true
| }
| }
| },
| resolve: {
| extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.less', '.css'],
| alias: [
| {
| find: '@',
| replacement: `${pathResolve('src')}`
| }
| ]
| },
| optimizeDeps: {
| include: [
| 'vue',
| 'vue-router',
| 'vue-types',
| 'element-plus-secondary/es/locale/lang/zh-cn',
| 'element-plus-secondary/es/locale/lang/en',
| '@vueuse/core',
| 'axios'
| ]
| }
| }
|
|