mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-27 14:13:40 +08:00
fix(build): fix environment variable configuration file failure
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import { gzip } from 'zlib';
|
||||
import { readFileSync, writeFileSync } from 'fs';
|
||||
import { GzipPluginOptions } from './types';
|
||||
import viteConfig from '../../../../vite.config';
|
||||
import { readAllFile, getCwdPath, isBuildGzip, isSiteMode } from '../../../utils';
|
||||
|
||||
export function startGzip(
|
||||
@@ -22,8 +21,8 @@ export function startGzip(
|
||||
// 手动压缩css
|
||||
export async function startGzipStyle() {
|
||||
if (isBuildGzip() || isSiteMode()) {
|
||||
const outDir = viteConfig.outDir || 'dist';
|
||||
const assets = viteConfig.assetsDir || '_assets';
|
||||
const outDir = 'dist';
|
||||
const assets = '_assets';
|
||||
const allCssFile = readAllFile(getCwdPath(outDir, assets), /\.(css)$/);
|
||||
for (const path of allCssFile) {
|
||||
const source = readFileSync(path);
|
||||
|
@@ -7,16 +7,21 @@ import { hmScript } from '../hm';
|
||||
import pkg from '../../../package.json';
|
||||
import { GLOB_CONFIG_FILE_NAME } from '../../constant';
|
||||
|
||||
export function setupHtmlPlugin(plugins: Plugin[], env: ViteEnv) {
|
||||
export function setupHtmlPlugin(
|
||||
plugins: Plugin[],
|
||||
env: ViteEnv,
|
||||
mode: 'development' | 'production'
|
||||
) {
|
||||
const { VITE_GLOB_APP_TITLE, VITE_PUBLIC_PATH } = env;
|
||||
|
||||
const htmlPlugin = ViteHtmlPlugin({
|
||||
// html title
|
||||
title: VITE_GLOB_APP_TITLE,
|
||||
minify: isProdFn(),
|
||||
minify: isProdFn(mode),
|
||||
options: {
|
||||
publicPath: VITE_PUBLIC_PATH,
|
||||
// Package and insert additional configuration files
|
||||
injectConfig: isProdFn()
|
||||
injectConfig: isProdFn(mode)
|
||||
? `<script src='${VITE_PUBLIC_PATH || './'}${GLOB_CONFIG_FILE_NAME}?v=${
|
||||
pkg.version
|
||||
}-${new Date().getTime()}'></script>`
|
||||
|
@@ -8,21 +8,21 @@ import gzipPlugin from './gzip/index';
|
||||
|
||||
// @ts-ignore
|
||||
import pkg from '../../../package.json';
|
||||
import { isProdFn, isSiteMode, ViteEnv, isReportMode, isBuildGzip } from '../../utils';
|
||||
import { isSiteMode, ViteEnv, isReportMode, isBuildGzip } from '../../utils';
|
||||
import { setupHtmlPlugin } from './html';
|
||||
import { setupPwaPlugin } from './pwa';
|
||||
import { setupMockPlugin } from './mock';
|
||||
|
||||
// gen vite plugins
|
||||
export function createVitePlugins(viteEnv: ViteEnv) {
|
||||
export function createVitePlugins(viteEnv: ViteEnv, mode: 'development' | 'production') {
|
||||
const vitePlugins: VitePlugin[] = [];
|
||||
|
||||
// vite-plugin-html
|
||||
setupHtmlPlugin(vitePlugins, viteEnv);
|
||||
setupHtmlPlugin(vitePlugins, viteEnv, mode);
|
||||
// vite-plugin-pwa
|
||||
setupPwaPlugin(vitePlugins, viteEnv);
|
||||
setupPwaPlugin(vitePlugins, viteEnv, mode);
|
||||
// vite-plugin-mock
|
||||
setupMockPlugin(vitePlugins, viteEnv);
|
||||
setupMockPlugin(vitePlugins, viteEnv, mode);
|
||||
|
||||
// vite-plugin-purge-icons
|
||||
vitePlugins.push(PurgeIcons());
|
||||
@@ -34,12 +34,11 @@ export function createVitePlugins(viteEnv: ViteEnv) {
|
||||
export function createRollupPlugin() {
|
||||
const rollupPlugins: rollupPlugin[] = [];
|
||||
|
||||
if (!isProdFn() && isReportMode()) {
|
||||
if (isReportMode()) {
|
||||
// rollup-plugin-visualizer
|
||||
rollupPlugins.push(visualizer({ filename: './build/.cache/stats.html', open: true }) as Plugin);
|
||||
}
|
||||
|
||||
if (!isProdFn() && (isBuildGzip() || isSiteMode())) {
|
||||
if (isBuildGzip() || isSiteMode()) {
|
||||
// rollup-plugin-gizp
|
||||
rollupPlugins.push(gzipPlugin());
|
||||
}
|
||||
|
@@ -2,14 +2,22 @@ import { createMockServer } from 'vite-plugin-mock';
|
||||
import type { Plugin } from 'vite';
|
||||
import { isDevFn, ViteEnv } from '../../utils';
|
||||
|
||||
export function setupMockPlugin(plugins: Plugin[], env: ViteEnv) {
|
||||
export function setupMockPlugin(
|
||||
plugins: Plugin[],
|
||||
env: ViteEnv,
|
||||
mode: 'development' | 'production'
|
||||
) {
|
||||
const { VITE_USE_MOCK } = env;
|
||||
const mockPlugin = createMockServer({
|
||||
ignore: /^\_/,
|
||||
mockPath: 'mock',
|
||||
showTime: true,
|
||||
});
|
||||
if (isDevFn() && VITE_USE_MOCK) {
|
||||
|
||||
const useMock = isDevFn(mode) && VITE_USE_MOCK;
|
||||
|
||||
if (useMock) {
|
||||
const mockPlugin = createMockServer({
|
||||
ignore: /^\_/,
|
||||
mockPath: 'mock',
|
||||
showTime: true,
|
||||
localEnabled: useMock,
|
||||
});
|
||||
plugins.push(mockPlugin);
|
||||
}
|
||||
return plugins;
|
||||
|
@@ -1,8 +1,13 @@
|
||||
import { VitePWA } from 'vite-plugin-pwa';
|
||||
import type { Plugin } from 'vite';
|
||||
import { isProdFn, ViteEnv } from '../../utils';
|
||||
import { ViteEnv } from '../../utils';
|
||||
|
||||
export function setupPwaPlugin(plugins: Plugin[], env: ViteEnv) {
|
||||
export function setupPwaPlugin(
|
||||
plugins: Plugin[],
|
||||
env: ViteEnv,
|
||||
// @ts-ignore
|
||||
mode: 'development' | 'production'
|
||||
) {
|
||||
const { VITE_USE_PWA } = env;
|
||||
|
||||
const pwaPlugin = VitePWA({
|
||||
@@ -23,8 +28,7 @@ export function setupPwaPlugin(plugins: Plugin[], env: ViteEnv) {
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
if (isProdFn() && VITE_USE_PWA) {
|
||||
if (VITE_USE_PWA) {
|
||||
plugins.push(pwaPlugin);
|
||||
}
|
||||
return plugins;
|
||||
|
@@ -2,21 +2,31 @@ type ProxyItem = [string, string];
|
||||
|
||||
type ProxyList = ProxyItem[];
|
||||
|
||||
const reg = /^https:\/\//;
|
||||
type ProxyTargetList = Record<
|
||||
string,
|
||||
{
|
||||
target: string;
|
||||
changeOrigin: boolean;
|
||||
rewrite: (path: string) => any;
|
||||
secure?: boolean;
|
||||
}
|
||||
>;
|
||||
|
||||
const httpsRE = /^https:\/\//;
|
||||
|
||||
/**
|
||||
* Generate proxy
|
||||
* @param list
|
||||
*/
|
||||
export function createProxy(list: ProxyList = []) {
|
||||
const ret: any = {};
|
||||
const ret: ProxyTargetList = {};
|
||||
for (const [prefix, target] of list) {
|
||||
const isHttps = reg.test(target);
|
||||
const isHttps = httpsRE.test(target);
|
||||
|
||||
ret[prefix] = {
|
||||
target: target,
|
||||
changeOrigin: true,
|
||||
rewrite: (path: string) => path.replace(new RegExp(`^${prefix}`), ''),
|
||||
rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''),
|
||||
// https is require secure=false
|
||||
...(isHttps ? { secure: false } : {}),
|
||||
};
|
||||
|
Reference in New Issue
Block a user