|
@@ -14,6 +14,17 @@ export default defineConfig({
|
|
|
// assetsInclude: ['**/*.html'],
|
|
|
plugins: [
|
|
|
// mkcert(), // 本地https
|
|
|
+ // 其他插件...
|
|
|
+ viteCompression({
|
|
|
+ algorithm: "gzip", // 指定压缩算法为gzip,[ 'gzip' , 'brotliCompress' ,'deflate' , 'deflateRaw']
|
|
|
+ ext: ".gz", // 指定压缩后的文件扩展名为.gz
|
|
|
+ threshold: 10240, // 仅对文件大小大于threshold的文件进行压缩,默认为10KB
|
|
|
+ deleteOriginFile: false, // 是否删除原始文件,默认为false
|
|
|
+ filter: /\.(js|css|json|html|ico|svg)(\?.*)?$/i, // 匹配要压缩的文件的正则表达式,默认为匹配.js、.css、.json、.html、.ico和.svg文件
|
|
|
+ compressionOptions: { level: 9 }, // 指定gzip压缩级别,默认为9(最高级别)
|
|
|
+ verbose: true, //是否在控制台输出压缩结果
|
|
|
+ disable: false, //是否禁用插件
|
|
|
+ }),
|
|
|
legacy({
|
|
|
targets: ["Chrome 63"],
|
|
|
additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
|
|
@@ -35,11 +46,30 @@ export default defineConfig({
|
|
|
},
|
|
|
},
|
|
|
build: {
|
|
|
+ minify: 'terser', // 启用 terser 压缩
|
|
|
+ terserOptions: {
|
|
|
+ compress: {
|
|
|
+ pure_funcs: ['console.log'], // 只删除 console.log
|
|
|
+ //drop_console: true, // 删除所有 console
|
|
|
+ drop_debugger: true, // 删除 debugger
|
|
|
+ }
|
|
|
+ },
|
|
|
rollupOptions: {
|
|
|
input: {
|
|
|
instrument: resolve(__dirname, "instrument.html"),
|
|
|
},
|
|
|
output: {
|
|
|
+ // 最小化拆分包
|
|
|
+ manualChunks(id) {
|
|
|
+ if (id.includes("osmd-extended")) {
|
|
|
+ // 通过拆分包的方式将所有来自osmd-extended的模块打包到单独的chunk中
|
|
|
+ return id
|
|
|
+ .toString()
|
|
|
+ .split("osmd-extended/")[1]
|
|
|
+ .split("/")[0]
|
|
|
+ .toString();
|
|
|
+ }
|
|
|
+ },
|
|
|
chunkFileNames: "js/[name]-[hash].js", // 引入文件名的名称
|
|
|
entryFileNames: "js/[name]-[hash].js", // 包的入口文件名称
|
|
|
assetFileNames: "[ext]/[name]-[hash].[ext]", // 资源文件像 字体,图片等
|