You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import type { Plugin } from "vite"; import { isArray } from "@pureadmin/utils"; import compressPlugin from "vite-plugin-compression";
export const configCompressPlugin = ( compress: ViteCompression ): Plugin | Plugin[] => { if (compress === "none") return null;
const gz = { // 生成的压缩包后缀
ext: ".gz", // 体积大于threshold才会被压缩
threshold: 0, // 默认压缩.js|mjs|json|css|html后缀文件,设置成true,压缩全部文件
filter: () => true, // 压缩后是否删除原始文件
deleteOriginFile: false }; const br = { ext: ".br", algorithm: "brotliCompress", threshold: 0, filter: () => true, deleteOriginFile: false };
const codeList = [ { k: "gzip", v: gz }, { k: "brotli", v: br }, { k: "both", v: [gz, br] } ];
const plugins: Plugin[] = [];
codeList.forEach(item => { if (compress.includes(item.k)) { if (compress.includes("clear")) { if (isArray(item.v)) { item.v.forEach(vItem => { plugins.push( compressPlugin(Object.assign(vItem, { deleteOriginFile: true })) ); }); } else { plugins.push( compressPlugin(Object.assign(item.v, { deleteOriginFile: true })) ); } } else { if (isArray(item.v)) { item.v.forEach(vItem => { plugins.push(compressPlugin(vItem)); }); } else { plugins.push(compressPlugin(item.v)); } } } });
return plugins; };
|