From 6e8ced2903edc19a26cbe0332f42c6c0f125d6b2 Mon Sep 17 00:00:00 2001 From: Dragon <13925835632@139.com> Date: Mon, 16 Oct 2023 09:20:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8E=8B=E7=BC=A9=E6=9A=82?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 62 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + vue.config.js | 8 ++++++ 3 files changed, 71 insertions(+) diff --git a/package-lock.json b/package-lock.json index ff26b0e..b711fe6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-service": "~5.0.0", + "compression-webpack-plugin": "^10.0.0", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3", "vue": "^3.2.13", @@ -4751,6 +4752,67 @@ "node": ">= 0.8.0" } }, + "node_modules/compression-webpack-plugin": { + "version": "10.0.0", + "resolved": "https://registry.npmmirror.com/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz", + "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "node_modules/compression-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/compression-webpack-plugin/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + } + }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", diff --git a/package.json b/package.json index 2b77d60..15017df 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-service": "~5.0.0", + "compression-webpack-plugin": "^10.0.0", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3", "vue": "^3.2.13", diff --git a/vue.config.js b/vue.config.js index 66820bf..b1cb7ba 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,5 +1,7 @@ const { defineConfig } = require('@vue/cli-service') var webpack = require('webpack') +const CompressionPlugin = require('compression-webpack-plugin') +const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i module.exports = defineConfig({ transpileDependencies: true, chainWebpack: config => { @@ -10,6 +12,7 @@ module.exports = defineConfig({ return args }) }, + productionSourceMap: false, configureWebpack: { plugins: [ new webpack.ProvidePlugin({ @@ -18,6 +21,11 @@ module.exports = defineConfig({ 'windows.jQuery': 'jquery', Popper: ['popper.js', 'default'] }), + new CompressionPlugin({ + test: productionGzipExtensions, // 需要压缩的文件正则 + threshold: 1024, // 文件大小大于这个值时启用压缩 + deleteOriginalAssets: false // 压缩后保留原文件 + }) ], }, devServer: {