Files
2026-06-29 18:44:06 +08:00

146 lines
3.8 KiB
TypeScript

import uni from '@dcloudio/vite-plugin-uni';
import { loadEnv } from 'vite';
import viteCompression from 'vite-plugin-compression';
import path from 'path';
import uniReadPagesV3Plugin from './src/sheep/router/utils/uni-read-pages-v3';
// import mpliveMainfestPlugin from './src/sheep/libs/mplive-manifest-plugin';
// https://vitejs.dev/config/
export default async (command: 'build' | 'serve', mode: string) => {
const env = loadEnv(mode, __dirname, 'SHOPRO_');
const { default: Unocss } = await import('unocss/vite');
const isBuild = command === 'build';
const nodeEnv = mode === 'production' ? 'production' : 'development';
const browserProcessEnv = {
NODE_ENV: nodeEnv,
UNI_APP_X: process.env.UNI_APP_X ?? '',
};
const browserProcess = JSON.stringify({
env: {
...browserProcessEnv,
},
});
const isH5 = process.env.UNI_PLATFORM === 'h5';
if (isH5) {
return {
envPrefix: 'SHOPRO_',
define: {
process: browserProcess,
'process.env': JSON.stringify(browserProcessEnv),
'process.env.NODE_ENV': JSON.stringify(nodeEnv),
'process.env.UNI_APP_X': JSON.stringify(process.env.UNI_APP_X ?? ''),
},
plugins: [
uni(),
Unocss(),
viteCompression({
verbose: false,
}),
uniReadPagesV3Plugin({
pagesJsonDir: path.resolve(__dirname, './src/pages.json'),
includes: ['path', 'aliasPath', 'name', 'meta'],
}),
],
esbuild: {
drop: isBuild ? ['console', 'debugger'] : [],
},
server: {
host: true,
hmr: {
overlay: true,
},
proxy: {
// 应用相关api
'/app-api': {
target: env.SHOPRO_DEV_BASE_URL,
changeOrigin: true,
},
// 聊天相关api
'/api': {
target: 'http://im-platform.htysapp.com',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api/, ''),
},
},
},
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
},
},
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler',
},
},
},
};
} else {
return {
envPrefix: 'SHOPRO_',
define: {
process: browserProcess,
'process.env': JSON.stringify(browserProcessEnv),
'process.env.NODE_ENV': JSON.stringify(nodeEnv),
'process.env.UNI_APP_X': JSON.stringify(process.env.UNI_APP_X ?? ''),
},
plugins: [
uni(),
Unocss(),
viteCompression({
verbose: false,
}),
uniReadPagesV3Plugin({
pagesJsonDir: path.resolve(__dirname, './src/pages.json'),
includes: ['path', 'aliasPath', 'name', 'meta'],
}),
],
esbuild: {
drop: isBuild ? ['console', 'debugger'] : [],
target: 'es2015',
supported: {
'optional-chain': false,
'nullish-coalescing': false,
},
},
build: {
target: 'es2015',
},
server: {
host: true,
hmr: {
overlay: true,
},
proxy: {
// 应用相关api
'/app-api': {
target: env.SHOPRO_DEV_BASE_URL,
changeOrigin: true,
},
// 聊天相关api
'/api': {
target: 'http://im-platform.htysapp.com',
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/api/, ''),
},
},
},
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
},
},
css: {
preprocessorOptions: {
scss: {
api: 'modern-compiler',
},
},
},
};
}
};