From 6f1229d08cf208bfb9ea71b6909e46620948ad9a Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期一, 04 十二月 2023 13:40:32 +0800
Subject: [PATCH] 饼图样式优化
---
vue.config.js | 223 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 219 insertions(+), 4 deletions(-)
diff --git a/vue.config.js b/vue.config.js
index 910e297..cd9a548 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -1,4 +1,219 @@
-const { defineConfig } = require('@vue/cli-service')
-module.exports = defineConfig({
- transpileDependencies: true
-})
+const CompressionWebpackPlugin = require("compression-webpack-plugin");
+const VueFilenameInjector = require("@d2-projects/vue-filename-injector");
+const ThemeColorReplacer = require("webpack-theme-color-replacer");
+const forElementUI = require("webpack-theme-color-replacer/forElementUI");
+const cdnDependencies = require("./dependencies-cdn");
+const { chain, set, each } = require("lodash");
+
+// 鎷兼帴璺緞
+const resolve = (dir) => require("path").join(__dirname, dir);
+
+// 澧炲姞鐜鍙橀噺
+process.env.VUE_APP_VERSION = require("./package.json").version;
+process.env.VUE_APP_BUILD_TIME = require("dayjs")().format("YYYY-M-D HH:mm:ss");
+
+// 鍩虹璺緞 娉ㄦ剰鍙戝竷涔嬪墠瑕佸厛淇敼杩欓噷
+const publicPath = process.env.VUE_APP_PUBLIC_PATH || "/";
+
+// 璁剧疆涓嶅弬涓庢瀯寤虹殑搴�
+const externals = {};
+cdnDependencies.forEach((pkg) => {
+ externals[pkg.name] = pkg.library;
+});
+
+// 寮曞叆鏂囦欢鐨� cdn 閾炬帴
+const cdn = {
+ css: cdnDependencies.map((e) => e.css).filter((e) => e),
+ js: cdnDependencies.map((e) => e.js).filter((e) => e),
+};
+
+// 澶氶〉閰嶇疆锛岄粯璁ゆ湭寮�鍚紝濡傞渶瑕佽鍙傝�� https://cli.vuejs.org/zh/config/#pages
+const pages = undefined;
+// const pages = {
+// index: './src/main.js',
+// subpage: './src/subpage.js'
+// }
+
+module.exports = {
+ // 鏍规嵁浣犵殑瀹為檯鎯呭喌鏇存敼杩欓噷
+
+ publicPath,
+ lintOnSave: true,
+ devServer: {
+ proxy: {
+ "/api/base": {
+ target: "http://192.168.20.119:8001",
+ ws: true,
+ changeOrigin: true,
+ },
+ "/api/user": {
+ target: "http://192.168.20.119:8001",
+ ws: true,
+ changeOrigin: true,
+ },
+ "/api/menu": {
+ target: "http://192.168.20.119:8001",
+ ws: true,
+ changeOrigin: true,
+ },
+ "/api-s": {
+ target: "http://192.168.20.119:9081",
+ ws: true,
+ changeOrigin: true,
+ },
+ "/api": {
+ target: "http://192.168.20.118:8001",
+ ws: true,
+ changeOrigin: true,
+ },
+ "/v1/": {
+ // 蹇楄秴
+ // target: "http://127.0.0.1:8003",
+ // 寮犻獮鏈湴
+ // target: "http://192.168.20.120:8003",
+ // 鍗氬畤
+ // target: "http://192.168.20.119:8003",
+ // 绾夸笂
+ target: "http://192.168.8.113:8080",
+ ws: true,
+ changeOrigin: true,
+ },
+ // "/api-s": {
+ // target: "http://192.168.20.113:9081",
+ // ws: true,
+ // changeOrigin: true,
+ // },
+ },
+ publicPath, // 鍜� publicPath 淇濇寔涓�鑷�
+ disableHostCheck: process.env.NODE_ENV === "development", // 鍏抽棴 host check锛屾柟渚夸娇鐢� ngrok 涔嬬被鐨勫唴缃戣浆鍙戝伐鍏�
+ },
+ css: {
+ loaderOptions: {
+ // 璁剧疆 scss 鍏敤鍙橀噺鏂囦欢
+ sass: {
+ prependData: "@import '~@/assets/style/public.scss';",
+ },
+ },
+ },
+ pages,
+ configureWebpack: (config) => {
+ const configNew = {};
+ if (process.env.NODE_ENV === "production") {
+ configNew.externals = externals;
+ configNew.plugins = [
+ // gzip
+ new CompressionWebpackPlugin({
+ filename: "[path].gz[query]",
+ test: new RegExp("\\.(" + ["js", "css"].join("|") + ")$"),
+ threshold: 10240,
+ minRatio: 0.8,
+ deleteOriginalAssets: false,
+ }),
+ ];
+ }else if(process.env.NODE_ENV === "development"){
+
+ }
+ return configNew;
+ },
+ // 榛樿璁剧疆: https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-service/lib/config/base.js
+ chainWebpack: (config) => {
+ /**
+ * 娣诲姞 CDN 鍙傛暟鍒� htmlWebpackPlugin 閰嶇疆涓�
+ * 宸查�傞厤澶氶〉
+ */
+ const htmlPluginNames = chain(pages)
+ .keys()
+ .map((page) => "html-" + page)
+ .value();
+ const targetHtmlPluginNames = htmlPluginNames.length
+ ? htmlPluginNames
+ : ["html"];
+ each(targetHtmlPluginNames, (name) => {
+ config.plugin(name).tap((options) => {
+ set(
+ options,
+ "[0].cdn",
+ process.env.NODE_ENV === "production" ? cdn : []
+ );
+ return options;
+ });
+ });
+
+ /**
+ * 鍒犻櫎鎳掑姞杞芥ā鍧楃殑 prefetch preload锛岄檷浣庡甫瀹藉帇鍔�
+ * https://cli.vuejs.org/zh/guide/html-and-static-assets.html#prefetch
+ * https://cli.vuejs.org/zh/guide/html-and-static-assets.html#preload
+ * 鑰屼笖棰勬覆鏌撴椂鐢熸垚鐨� prefetch 鏍囩鏄� modern 鐗堟湰鐨勶紝浣庣増鏈祻瑙堝櫒鏄笉闇�瑕佺殑
+ */
+ config.plugins.delete("prefetch").delete("preload");
+ // 瑙e喅 cli3 鐑洿鏂板け鏁� https://github.com/vuejs/vue-cli/issues/1559
+ config.resolve.symlinks(true);
+ config.plugin("theme-color-replacer").use(ThemeColorReplacer, [
+ {
+ fileName: "css/theme-colors.[contenthash:8].css",
+ matchColors: [
+ ...forElementUI.getElementUISeries(process.env.VUE_APP_ELEMENT_COLOR), // Element-ui涓昏壊绯诲垪
+ ],
+ externalCssFiles: [
+ "./node_modules/element-ui/lib/theme-chalk/index.css",
+ ], // optional, String or string array. Set external css files (such as cdn css) to extract colors.
+ changeSelector: forElementUI.changeSelector,
+ },
+ ]);
+ config
+ // 寮�鍙戠幆澧� sourcemap 涓嶅寘鍚垪淇℃伅
+ .when(process.env.NODE_ENV === "development", (config) =>
+ config.devtool("cheap-source-map")
+ )
+ // 棰勮鐜鏋勫缓 vue-loader 娣诲姞 filename
+ .when(process.env.VUE_APP_SCOURCE_LINK === "TRUE", (config) =>
+ VueFilenameInjector(config, {
+ propName: process.env.VUE_APP_SOURCE_VIEWER_PROP_NAME,
+ })
+ );
+ // markdown
+ config.module
+ .rule("md")
+ .test(/\.md$/)
+ .use("text-loader")
+ .loader("text-loader")
+ .end();
+ // svg
+ const svgRule = config.module.rule("svg");
+ svgRule.uses.clear();
+ svgRule.include
+ .add(resolve("src/assets/svg-icons/icons"))
+ .end()
+ .use("svg-sprite-loader")
+ .loader("svg-sprite-loader")
+ .options({
+ symbolId: "d2-[name]",
+ })
+ .end();
+ // image exclude
+ const imagesRule = config.module.rule("images");
+ imagesRule
+ .test(/\.(png|jpe?g|gif|webp|svg)(\?.*)?$/)
+ .exclude.add(resolve("src/assets/svg-icons/icons"))
+ .end();
+ // 閲嶆柊璁剧疆 alias
+ config.resolve.alias.set("@api", resolve("src/api"));
+ // 鍒嗘瀽宸ュ叿
+ if (process.env.npm_config_report) {
+ config
+ .plugin("webpack-bundle-analyzer")
+ .use(require("webpack-bundle-analyzer").BundleAnalyzerPlugin);
+ }
+ },
+ // 涓嶈緭鍑� map 鏂囦欢
+ productionSourceMap: false,
+ // i18n
+ pluginOptions: {
+ i18n: {
+ locale: "zh-chs",
+ fallbackLocale: "en",
+ localeDir: "locales",
+ enableInSFC: true,
+ },
+ },
+};
--
Gitblit v1.8.0