import {defineConfig, normalizePath} from 'vite'
import react from '@vitejs/plugin-react'
import path from 'path'
import fs from 'fs'
import autoprefixer from 'autoprefixer'
import svgr from 'vite-plugin-svgr'
import vitePluginImp from 'vite-plugin-imp'
import {viteMockServe} from 'vite-plugin-mock'
import lessToJS from 'less-vars-to-js'
import aliyunTheme from '@ant-design/aliyun-theme'
import {getThemeVariables} from 'antd/dist/theme'
import viteImagemin from 'vite-plugin-imagemin'
const themeVariables = lessToJS(fs.readFileSync(path.resolve(__dirname, 'src/style/styleConfig.less'), 'utf8'))
const variablePath = normalizePath(path.resolve(__dirname, 'src/style/color.less'))
export default defineConfig({
plugins: [
react({
babel: {
plugins: ['babel-plugin-styled-components'],
},
}),
svgr(),
vitePluginImp({
libList: [
{
libName: 'antd',
style: (name) => `antd/es/${name}/style`,
},
],
}),
viteMockServe({
mockPath: 'mock',
logger: true,
}),
viteImagemin({
optipng: {
optimizationLevel: 7,
},
pngquant: {
quality: [0.8, 0.9],
},
svgo: {
plugins: [
{
name: 'removeViewBox',
},
{
name: 'removeEmptyAttrs',
active: false,
},
],
},
}),
],
resolve: {
alias: {
'@': path.join(__dirname, 'src'),
'@assets': path.join(__dirname, 'src/assets'),
},
},
css: {
modules: {
generateScopedName: '[name]__[local]___[hash:base64:5]',
},
preprocessorOptions: {
scss: {
additionalData: `@import "${variablePath}";`,
},
less: {
additionalData: `@import "${variablePath}";`,
javascriptEnabled: true,
modifyVars: aliyunTheme,
},
},
postcss: {
plugins: [
autoprefixer({
overrideBrowserslist: ['Chrome > 40', 'ff > 31', 'ie 11'],
}),
],
},
},
server: {
proxy: {
},
},
optimizeDeps: {
include: ['react'],
},
})
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义