146 lines
3.8 KiB
TypeScript
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',
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|
|
};
|