YouKeChuanMei_VUE/vite.config.js
wangchengming 7fc8d59c06 提交
2025-10-27 09:39:58 +08:00

109 lines
3.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
import postcsspxtorem from 'postcss-pxtorem'
const baseUrl = 'http://43.143.229.145:9002/prod-api' // 后端接口
const analysisUrl = 'http://43.143.229.145:9002/ppt-analysis-api'
// 生产环境
// const baseUrl = 'http://8.140.172.21:9002/prod-api' // 后端接口
// const analysisUrl = 'http://8.140.172.21:9002/ppt-analysis-api'
// https://vitejs.dev/config/
export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd())
const { VITE_APP_ENV } = env
return {
// 部署生产环境和开发环境下的URL。
// 默认情况下vite 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
base: VITE_APP_ENV === 'production' ? '/' : '/',
plugins: createVitePlugins(env, command === 'build'),
resolve: {
// https://cn.vitejs.dev/config/#resolve-alias
alias: {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src')
},
// https://cn.vitejs.dev/config/#resolve-extensions
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
// 打包配置
build: {
// https://vite.dev/config/build-options.html
sourcemap: command === 'build' ? false : 'inline',
outDir: 'dist',
assetsDir: 'assets',
chunkSizeWarningLimit: 2000,
rollupOptions: {
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
}
}
},
// vite 相关配置
server: {
port: 80,
host: true,
open: true,
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
'/dev-api': {
target: baseUrl,
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
'/ppt-analysis-api': {
target: analysisUrl,
changeOrigin: true,
rewrite: (p) => p.replace(/^\/ppt-analysis-api/, '')
},
// springdoc proxy
'^/v3/api-docs/(.*)': {
target: baseUrl,
changeOrigin: true,
}
}
},
css: {
postcss: {
plugins: [
postcsspxtorem({
rootValue: 192, // 设计稿宽度/10
propList: ['*'], // 需要转换的属性列表,*表示所有
unitPrecision: 2, // 默认值: 5 // 作用: rem值的小数位数
exclude: /node_modules/i,
selectorBlackList: [], // 忽略的选择器
replace: true, // 作用: 替换包含rem的规则而不是添加回退
mediaQuery: false, // 作用: 是否在媒体查询中转换px
minPixelValue: 1.5, // 最小转换值
// 作用: 设置要替换的最小像素值
// 示例:
// minPixelValue: 2 - 只有大于等于2px的值才会被转换
// minPixelValue: 1.5 - 1.5px以上的值都会被转换
landscape: false,
landscapeUnit: 'rem', // 默认值: 'vw'
// 作用: 横屏模式使用的单位
landscapeWidth: 568 // 默认值: 568
// 作用: 横屏模式的宽度
}),
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) => {
if (atRule.name === 'charset') {
atRule.remove()
}
}
}
}
]
}
}
}
})