This commit is contained in:
2024-02-02 22:31:01 +08:00
parent 06a5f041bf
commit 486ea5013a
77 changed files with 17507 additions and 122 deletions

15
build/constant.ts Normal file
View File

@@ -0,0 +1,15 @@
/**
* @name Config
* @description 项目配置
*/
// prefix
export const API_PREFIX = '/api';
// serve
export const API_BASE_URL = '/api';
export const API_TARGET_URL = 'http://localhost:8080';
// mock
export const MOCK_API_BASE_URL = '/mock/api';
export const MOCK_API_TARGET_URL = 'http://localhost:3000';

View File

@@ -0,0 +1,13 @@
/**
* @name AutoImportDeps
* @description 按需加载,自动引入
*/
import AutoImport from 'unplugin-auto-import/vite';
export const AutoImportDeps = () => {
return AutoImport({
imports: ['vue', 'uni-app', 'pinia'],
dts: 'types/auto-imports.d.ts',
vueTemplate: true,
});
};

View File

@@ -0,0 +1,11 @@
/**
* @name AutoRegistryComponents
* @description 按需加载,自动引入
*/
import Components from 'unplugin-vue-components/vite';
export const AutoRegistryComponents = () => {
return Components({
dts: 'types/components.d.ts',
});
};

View File

@@ -0,0 +1,36 @@
/**
* @name ConfigImageminPlugin
* @description 图片压缩配置
*/
import viteImagemin from 'vite-plugin-imagemin';
export const ConfigImageminPlugin = () => {
const plugin = viteImagemin({
gifsicle: {
optimizationLevel: 7,
interlaced: false,
},
mozjpeg: {
quality: 20,
},
optipng: {
optimizationLevel: 7,
},
pngquant: {
quality: [0.8, 0.9],
speed: 4,
},
svgo: {
plugins: [
{
name: 'removeViewBox',
},
{
name: 'removeEmptyAttrs',
active: false,
},
],
},
});
return plugin;
};

View File

@@ -0,0 +1,30 @@
/**
* @name createVitePlugins
* @description 封装plugins数组统一调用
*/
import type { PluginOption } from 'vite';
import uniPlugin from '@dcloudio/vite-plugin-uni';
import { AutoImportDeps } from './autoImport';
import { AutoRegistryComponents } from './component';
import { ConfigUnoCSSPlugin } from './unocss';
import { ConfigImageminPlugin } from './imagemin';
export default function createVitePlugins(isBuild: boolean) {
const vitePlugins: (PluginOption | PluginOption[])[] = [
// UnoCSS配置
ConfigUnoCSSPlugin(),
// 自动按需引入依赖
AutoImportDeps(),
// 自动按需引入组件(注意:需注册至 uni 之前,否则不会生效)
AutoRegistryComponents(),
// uni支持
uniPlugin(),
];
if (isBuild) {
// vite-plugin-imagemin
vitePlugins.push(ConfigImageminPlugin());
}
return vitePlugins;
}

View File

@@ -0,0 +1,9 @@
/**
* @name ConfigUnoCSSPlugin
* @description UnoCSS相关配置
*/
import UnoCSS from 'unocss/vite';
export const ConfigUnoCSSPlugin = () => {
return UnoCSS();
};

21
build/vite/proxy.ts Normal file
View File

@@ -0,0 +1,21 @@
import type { ProxyOptions } from 'vite';
import { API_BASE_URL, API_TARGET_URL, MOCK_API_BASE_URL, MOCK_API_TARGET_URL } from '../constant';
type ProxyTargetList = Record<string, ProxyOptions>;
const init: ProxyTargetList = {
// test
[API_BASE_URL]: {
target: API_TARGET_URL,
changeOrigin: true,
rewrite: path => path.replace(new RegExp(`^${API_BASE_URL}`), ''),
},
// mock
[MOCK_API_BASE_URL]: {
target: MOCK_API_TARGET_URL,
changeOrigin: true,
rewrite: path => path.replace(new RegExp(`^${MOCK_API_BASE_URL}`), '/api'),
},
};
export default init;