xiaoxian521
2 years ago
11 changed files with 124 additions and 27 deletions
-
5.env.production
-
5.env.staging
-
63build/compress.ts
-
3build/index.ts
-
5build/plugins.ts
-
1package.json
-
18pnpm-lock.yaml
-
19src/views/permission/button/index.vue
-
15src/views/permission/page/index.vue
-
10types/global.d.ts
-
3vite.config.ts
@ -0,0 +1,63 @@ |
|||
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; |
|||
}; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue