1
0
mirror of https://github.com/fumiama/paper-manager.git synced 2026-06-13 05:03:16 +08:00

optimize vben/build

This commit is contained in:
源文雨
2023-03-11 16:50:54 +08:00
parent 2a0fdeae31
commit a42e2f450b
18 changed files with 197 additions and 197 deletions

View File

@@ -2,16 +2,16 @@
* Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
* https://github.com/anncwb/vite-plugin-compression
*/
import type { PluginOption } from 'vite';
import compressPlugin from 'vite-plugin-compression';
import type { PluginOption } from 'vite'
import compressPlugin from 'vite-plugin-compression'
export function configCompressPlugin(
compress: 'gzip' | 'brotli' | 'none',
deleteOriginFile = false,
): PluginOption | PluginOption[] {
const compressList = compress.split(',');
const compressList = compress.split(',')
const plugins: PluginOption[] = [];
const plugins: PluginOption[] = []
if (compressList.includes('gzip')) {
plugins.push(
@@ -19,7 +19,7 @@ export function configCompressPlugin(
ext: '.gz',
deleteOriginFile,
}),
);
)
}
if (compressList.includes('brotli')) {
@@ -29,7 +29,7 @@ export function configCompressPlugin(
algorithm: 'brotliCompress',
deleteOriginFile,
}),
);
)
}
return plugins;
return plugins
}

View File

@@ -2,19 +2,19 @@
* Plugin to minimize and use ejs template syntax in index.html.
* https://github.com/anncwb/vite-plugin-html
*/
import type { PluginOption } from 'vite';
import { createHtmlPlugin } from 'vite-plugin-html';
import pkg from '../../../package.json';
import { GLOB_CONFIG_FILE_NAME } from '../../constant';
import type { PluginOption } from 'vite'
import { createHtmlPlugin } from 'vite-plugin-html'
import pkg from '../../../package.json'
import { GLOB_CONFIG_FILE_NAME } from '../../constant'
export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) {
const { VITE_GLOB_APP_TITLE, VITE_PUBLIC_PATH } = env;
const { VITE_GLOB_APP_TITLE, VITE_PUBLIC_PATH } = env
const path = VITE_PUBLIC_PATH.endsWith('/') ? VITE_PUBLIC_PATH : `${VITE_PUBLIC_PATH}/`;
const path = VITE_PUBLIC_PATH.endsWith('/') ? VITE_PUBLIC_PATH : `${VITE_PUBLIC_PATH}/`
const getAppConfigSrc = () => {
return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`;
};
return `${path || '/'}${GLOB_CONFIG_FILE_NAME}?v=${pkg.version}-${new Date().getTime()}`
}
const htmlPlugin: PluginOption[] = createHtmlPlugin({
minify: isBuild,
@@ -35,6 +35,6 @@ export function configHtmlPlugin(env: ViteEnv, isBuild: boolean) {
]
: [],
},
});
return htmlPlugin;
})
return htmlPlugin
}

View File

@@ -1,6 +1,6 @@
// Image resource files used to compress the output of the production environment
// https://github.com/anncwb/vite-plugin-imagemin
import viteImagemin from 'vite-plugin-imagemin';
import viteImagemin from 'vite-plugin-imagemin'
export function configImageminPlugin() {
const plugin = viteImagemin({
@@ -29,6 +29,6 @@ export function configImageminPlugin() {
},
],
},
});
return plugin;
})
return plugin
}

View File

@@ -2,7 +2,7 @@
* Mock plugin for development and production.
* https://github.com/anncwb/vite-plugin-mock
*/
import { viteMockServe } from 'vite-plugin-mock';
import { viteMockServe } from 'vite-plugin-mock'
export function configMockPlugin(isBuild: boolean) {
return viteMockServe({
@@ -15,5 +15,5 @@ export function configMockPlugin(isBuild: boolean) {
setupProdMockServer();
`,
});
})
}

View File

@@ -2,10 +2,10 @@
* Zero-config PWA for Vite
* https://github.com/antfu/vite-plugin-pwa
*/
import { VitePWA } from 'vite-plugin-pwa';
import { VitePWA } from 'vite-plugin-pwa'
export function configPwaConfig(env: ViteEnv) {
const { VITE_USE_PWA, VITE_GLOB_APP_TITLE, VITE_GLOB_APP_SHORT_NAME } = env;
const { VITE_USE_PWA, VITE_GLOB_APP_TITLE, VITE_GLOB_APP_SHORT_NAME } = env
if (VITE_USE_PWA) {
// vite-plugin-pwa
@@ -26,8 +26,8 @@ export function configPwaConfig(env: ViteEnv) {
},
],
},
});
return pwaPlugin;
})
return pwaPlugin
}
return [];
return []
}

View File

@@ -3,8 +3,8 @@
* https://github.com/anncwb/vite-plugin-svg-icons
*/
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import path from 'path';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'
export function configSvgIconsPlugin(isBuild: boolean) {
const svgIconsPlugin = createSvgIconsPlugin({
@@ -12,6 +12,6 @@ export function configSvgIconsPlugin(isBuild: boolean) {
svgoOptions: isBuild,
// default
symbolId: 'icon-[dir]-[name]',
});
return svgIconsPlugin;
})
return svgIconsPlugin
}

View File

@@ -2,46 +2,46 @@
* Vite plugin for website theme color switching
* https://github.com/anncwb/vite-plugin-theme
*/
import type { PluginOption } from 'vite';
import path from 'path';
import type { PluginOption } from 'vite'
import path from 'path'
import {
viteThemePlugin,
antdDarkThemePlugin,
mixLighten,
mixDarken,
tinycolor,
} from 'vite-plugin-theme';
import { getThemeColors, generateColors } from '../../config/themeConfig';
import { generateModifyVars } from '../../generate/generateModifyVars';
} from 'vite-plugin-theme'
import { getThemeColors, generateColors } from '../../config/themeConfig'
import { generateModifyVars } from '../../generate/generateModifyVars'
export function configThemePlugin(isBuild: boolean): PluginOption[] {
const colors = generateColors({
mixDarken,
mixLighten,
tinycolor,
});
})
const plugin = [
viteThemePlugin({
resolveSelector: (s) => {
s = s.trim();
s = s.trim()
switch (s) {
case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
return '.ant-steps-item-icon > .ant-steps-icon';
return '.ant-steps-item-icon > .ant-steps-icon'
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)':
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover':
case '.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active':
return s;
return s
case '.ant-steps-item-icon > .ant-steps-icon':
return s;
return s
case '.ant-select-item-option-selected:not(.ant-select-item-option-disabled)':
return s;
return s
default:
if (s.indexOf('.ant-btn') >= -1) {
// 按钮被重新定制过需要过滤掉class防止覆盖
return s;
return s
}
}
return s.startsWith('[data-theme') ? s : `[data-theme] ${s}`;
return s.startsWith('[data-theme') ? s : `[data-theme] ${s}`
},
colorVariables: [...getThemeColors(), ...colors],
}),
@@ -83,7 +83,7 @@ export function configThemePlugin(isBuild: boolean): PluginOption[] {
'alert-error-icon-color': '#a61d24',
},
}),
];
]
return plugin as unknown as PluginOption[];
return plugin as unknown as PluginOption[]
}

View File

@@ -1,8 +1,8 @@
/**
* Package file volume analysis
*/
import visualizer from 'rollup-plugin-visualizer';
import { isReportMode } from '../../utils';
import visualizer from 'rollup-plugin-visualizer'
import { isReportMode } from '../../utils'
export function configVisualizerConfig() {
if (isReportMode()) {
@@ -11,7 +11,7 @@ export function configVisualizerConfig() {
open: true,
gzipSize: true,
brotliSize: true,
}) as Plugin;
})
}
return [];
return []
}

View File

@@ -1,24 +1,24 @@
/**
* Used to parse the .env.development proxy configuration
*/
import type { ProxyOptions } from 'vite';
import type { ProxyOptions } from 'vite'
type ProxyItem = [string, string];
type ProxyItem = [string, string]
type ProxyList = ProxyItem[];
type ProxyList = ProxyItem[]
type ProxyTargetList = Record<string, ProxyOptions>;
type ProxyTargetList = Record<string, ProxyOptions>
const httpsRE = /^https:\/\//;
const httpsRE = /^https:\/\//
/**
* Generate proxy
* @param list
*/
export function createProxy(list: ProxyList = []) {
const ret: ProxyTargetList = {};
const ret: ProxyTargetList = {}
for (const [prefix, target] of list) {
const isHttps = httpsRE.test(target);
const isHttps = httpsRE.test(target)
// https://github.com/http-party/node-http-proxy#options
ret[prefix] = {
@@ -28,7 +28,7 @@ export function createProxy(list: ProxyList = []) {
rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''),
// https is require secure=false
...(isHttps ? { secure: false } : {}),
};
}
}
return ret;
return ret
}