From f7499cdb0d5a76a1ee0fbecc9cf89d784b7a494a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=88=92=E5=9F=B9=E5=9F=B9?= Date: Mon, 5 Apr 2021 22:00:54 +0800 Subject: [PATCH] chore: optimize prod configuration to control whether to delete origin files when using compress plugin (#443) --- .env.production | 3 +++ build/vite/plugin/compress.ts | 7 ++++++- build/vite/plugin/index.ts | 12 ++++++++++-- types/global.d.ts | 1 + 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/.env.production b/.env.production index a4bf8f3fb..9fdf15fc5 100644 --- a/.env.production +++ b/.env.production @@ -12,6 +12,9 @@ VITE_DROP_CONSOLE = true # If you need multiple forms, you can use `,` to separate VITE_BUILD_COMPRESS = 'none' +# Whether to delete origin files when using compress, default false +VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = true + # Basic interface address SPA VITE_GLOB_API_URL=/basic-api diff --git a/build/vite/plugin/compress.ts b/build/vite/plugin/compress.ts index be17fa0d9..45583be2e 100644 --- a/build/vite/plugin/compress.ts +++ b/build/vite/plugin/compress.ts @@ -6,7 +6,10 @@ import type { Plugin } from 'vite'; import compressPlugin from 'vite-plugin-compression'; -export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none'): Plugin | Plugin[] { +export function configCompressPlugin( + compress: 'gzip' | 'brotli' | 'none', + deleteOriginFile: boolean = false +): Plugin | Plugin[] { const compressList = compress.split(','); const plugins: Plugin[] = []; @@ -15,6 +18,7 @@ export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none'): Plug plugins.push( compressPlugin({ ext: '.gz', + deleteOriginFile, }) ); } @@ -23,6 +27,7 @@ export function configCompressPlugin(compress: 'gzip' | 'brotli' | 'none'): Plug compressPlugin({ ext: '.br', algorithm: 'brotliCompress', + deleteOriginFile, }) ); } diff --git a/build/vite/plugin/index.ts b/build/vite/plugin/index.ts index afd71f226..d977eefe0 100644 --- a/build/vite/plugin/index.ts +++ b/build/vite/plugin/index.ts @@ -19,7 +19,13 @@ import { configSvgIconsPlugin } from './svgSprite'; import { configHmrPlugin } from './hmr'; export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { - const { VITE_USE_IMAGEMIN, VITE_USE_MOCK, VITE_LEGACY, VITE_BUILD_COMPRESS } = viteEnv; + const { + VITE_USE_IMAGEMIN, + VITE_USE_MOCK, + VITE_LEGACY, + VITE_BUILD_COMPRESS, + VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE, + } = viteEnv; const vitePlugins: (Plugin | Plugin[])[] = [ // have to @@ -64,7 +70,9 @@ export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean) { VITE_USE_IMAGEMIN && vitePlugins.push(configImageminPlugin()); // rollup-plugin-gzip - vitePlugins.push(configCompressPlugin(VITE_BUILD_COMPRESS)); + vitePlugins.push( + configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE) + ); // vite-plugin-pwa vitePlugins.push(configPwaConfig(viteEnv)); diff --git a/types/global.d.ts b/types/global.d.ts index b38a29512..d40bbd681 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -65,6 +65,7 @@ declare global { VITE_USE_CDN: boolean; VITE_DROP_CONSOLE: boolean; VITE_BUILD_COMPRESS: 'gzip' | 'brotli' | 'none'; + VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE: boolean; VITE_LEGACY: boolean; VITE_USE_IMAGEMIN: boolean; VITE_GENERATE_UI: string;