123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- import path from 'path'
- import vue from '@vitejs/plugin-vue'
- import legacy from '@vitejs/plugin-legacy'
- import vueJsx from '@vitejs/plugin-vue-jsx'
- import viteSvgIcons from 'vite-plugin-svg-icons'
- import { viteMockServe } from 'vite-plugin-mock'
- import { createHtmlPlugin } from 'vite-plugin-html'
- import Components from 'unplugin-vue-components/vite'
- import UnoCSS from 'unocss/vite'
- import { presetAttributify, presetIcons, presetUno } from 'unocss'
- import mkcert from 'vite-plugin-mkcert'
- import DefineOptions from 'unplugin-vue-define-options/vite'
- import AutoImport from 'unplugin-auto-import/vite'
- import setting from './src/settings'
- const prodMock = setting.openProdMock
- import { optimizeDependencies, optimizeElementPlus } from './optimize-include'
- const pathSrc = path.resolve(__dirname, 'src')
- export default ({ command, mode }: any) => {
- return {
-
- base: setting.viteBasePath,
-
- define: {
-
- 'process.platform': null,
- 'process.version': null,
- GLOBAL_STRING: JSON.stringify(
- 'i am global var from vite.config.js define'
- ),
- GLOBAL_VAR: {
- test: 'i am global var from vite.config.js define',
- },
- },
- clearScreen: false,
- server: {
- hmr: { overlay: false },
- port: 6003,
- open: false,
- cors: true,
- host: true,
- https: false,
-
-
-
-
-
-
-
-
- },
- preview: {
- port: 5008,
- host: true,
- strictPort: true,
- },
- plugins: [
- vue({ reactivityTransform: true }),
-
-
-
- vueJsx(),
- UnoCSS({
- presets: [presetUno(), presetAttributify(), presetIcons()],
- }),
- DefineOptions(),
- mkcert(),
-
-
-
-
-
- viteSvgIcons({
-
- iconDirs: [
- path.resolve(process.cwd(), 'src/icons/common'),
- path.resolve(process.cwd(), 'src/icons/nav-bar'),
- ],
-
- symbolId: 'icon-[dir]-[name]',
- }),
-
- viteMockServe({
- supportTs: true,
- mockPath: 'mock',
- localEnabled: command === 'serve',
- prodEnabled: prodMock,
- injectCode: `
- import { setupProdMockServer } from './mockProdServer';
- setupProdMockServer();
- `,
- logger: true,
- }),
-
-
- Components({
- resolvers: [
-
-
-
-
-
-
-
- ],
- }),
- AutoImport({
-
- imports: [
- 'vue',
- 'pinia',
- 'vue-router',
- {
- '@/hooks/global/useCommon': ['useCommon'],
- '@/hooks/global/useElement': ['useElement'],
- '@/hooks/global/useVueRouter': ['useVueRouter'],
- '@/utils/axiosReq': ['axiosReq'],
- },
- ],
- eslintrc: {
- enabled: true,
- filepath: './.eslintrc-auto-import.json',
- globalsPropValue: true,
- },
- dts: true,
- }),
-
- createHtmlPlugin({
- inject: {
-
- data: {
- title: setting.title,
- injectScript: `<script src="./demo.js"></script>`,
- },
- },
- }),
- ],
-
- build: {
-
- minify: 'terser',
- brotliSize: false,
-
- chunkSizeWarningLimit: 5000,
-
- terserOptions: {
-
- compress: {
- drop_console: false,
- pure_funcs: ['console.log', 'console.info'],
- drop_debugger: true,
- },
- },
-
- assetsDir: 'static/assets',
- rollupOptions: {
- output: {
- chunkFileNames: 'static/js/[name]-[hash].js',
- entryFileNames: 'static/js/[name]-[hash].js',
- assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
- },
- },
- },
- resolve: {
- alias: {
- '~/': `${pathSrc}/`,
- '@/': `${pathSrc}/`,
- },
-
-
- },
- css: {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- },
- optimizeDeps: {
-
-
- include: ['moment-mini'],
- },
- }
- }
|