فهرست منبع

😎优化打包配置及大小、升级Furion v4.9.1.55

zuohuaijun 2 سال پیش
والد
کامیت
6f3026112e
5فایلهای تغییر یافته به همراه41 افزوده شده و 43 حذف شده
  1. 3 3
      Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
  2. 9 9
      Admin.NET/Admin.NET.Web.Core/Startup.cs
  3. 10 10
      Web/index.html
  4. 5 3
      Web/package.json
  5. 14 18
      Web/vite.config.ts

+ 3 - 3
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -21,9 +21,9 @@
     <PackageReference Include="AspNet.Security.OAuth.Gitee" Version="6.0.15" />
     <PackageReference Include="AspNet.Security.OAuth.Weixin" Version="6.0.15" />
     <PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
-    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.1.54" />
-    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.1.54" />
-    <PackageReference Include="Furion.Pure" Version="4.9.1.54" />
+    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.1.55" />
+    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.1.55" />
+    <PackageReference Include="Furion.Pure" Version="4.9.1.55" />
     <PackageReference Include="IPTools.China" Version="1.6.0" />
     <PackageReference Include="Lazy.Captcha.Core" Version="2.0.6" />
     <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" />

+ 9 - 9
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -81,15 +81,15 @@ public class Startup : AppStartup
         // ElasticSearch
         services.AddElasticSearch();
 
-        //// 配置Nginx转发获取客户端真实IP
-        //// 注1:如果负载均衡不是在本机通过 Loopback 地址转发请求的,一定要加上options.KnownNetworks.Clear()和options.KnownProxies.Clear()
-        //// 注2:如果设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED 为 True,则不需要下面的配置代码
-        //services.Configure<ForwardedHeadersOptions>(options =>
-        //{
-        //    options.ForwardedHeaders = ForwardedHeaders.All;
-        //    options.KnownNetworks.Clear();
-        //    options.KnownProxies.Clear();
-        //});
+        // 配置Nginx转发获取客户端真实IP
+        // 注1:如果负载均衡不是在本机通过 Loopback 地址转发请求的,一定要加上options.KnownNetworks.Clear()和options.KnownProxies.Clear()
+        // 注2:如果设置环境变量 ASPNETCORE_FORWARDEDHEADERS_ENABLED 为 True,则不需要下面的配置代码
+        services.Configure<ForwardedHeadersOptions>(options =>
+        {
+            options.ForwardedHeaders = ForwardedHeaders.All;
+            options.KnownNetworks.Clear();
+            options.KnownProxies.Clear();
+        });
 
         // 限流服务
         services.AddInMemoryRateLimiting();

+ 10 - 10
Web/index.html

@@ -1,18 +1,12 @@
-<!DOCTYPE html>
+<!doctype html>
 <html lang="zh-CN">
 	<head>
 		<meta charset="utf-8" />
 		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
 		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
-		<meta
-			name="keywords"
-			content="furion,sqlsugar,vue-next-admin,基于Furion/.NET 6实现的通用管理平台。整合最新技术,模块插件式开发,前后端分离,开箱即用。"
-		/>
-		<meta
-			name="description"
-			content="基于 vue3 + CompositionAPI + typescript + vite + element plus,适配手机、平板、pc 的后台开源免费管理系统模板!"
-		/>
-		<link rel="stylesheet" type="text/css" media="print" href="/print-lock.css">
+		<meta name="keywords" content="furion,sqlsugar,vue-next-admin,基于Furion/.NET 6实现的通用管理平台。整合最新技术,模块插件式开发,前后端分离,开箱即用。" />
+		<meta name="description" content="基于 vue3 + CompositionAPI + typescript + vite + element plus,适配手机、平板、pc 的后台开源免费管理系统模板!" />
+		<link rel="stylesheet" type="text/css" media="print" href="/print-lock.css" />
 		<link rel="icon" href="/favicon.ico" />
 		<title>Admin.NET</title>
 	</head>
@@ -30,5 +24,11 @@
 		<script src="/config.js"></script>
 		<script type="module" src="/src/main.ts"></script>
 		<!-- <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=wsijQt8sLXrCW71YesmispvYHitfG9gv&s=1"></script> -->
+		<!-- <script src="https://res.zvo.cn/translate/translate.js"></script>
+		<script>
+			translate.language.setLocal('english'); //设置本地语种。默认是 'chinese_simplified' 简体中文。 可填写如 'english'、'chinese_simplified' 等。
+			translate.listener.start(); // 开启html页面变化的监控,对变化部分会进行自动翻译。这里变化区域是指使用 translate.setDocuments(...) 设置的区域。
+			translate.execute(); // 执行翻译初始化操作,显示出select语言选择
+		</script> -->
 	</body>
 </html>

+ 5 - 3
Web/package.json

@@ -49,8 +49,8 @@
 		"vue-demi": "^0.14.7",
 		"vue-grid-layout": "3.0.0-beta1",
 		"vue-i18n": "^9.10.2",
-		"vue-json-pretty": "^2.3.0",
-		"vue-plugin-hiprint": "0.0.57-beta6",
+		"vue-json-pretty": "^2.4.0",
+		"vue-plugin-hiprint": "0.0.57-beta19",
 		"vue-router": "^4.3.0",
 		"vue-signature-pad": "^3.0.2",
 		"vue3-tree-org": "^4.2.2",
@@ -71,9 +71,11 @@
 		"eslint-plugin-vue": "^9.23.0",
 		"less": "^4.2.0",
 		"prettier": "^3.2.5",
+		"rollup-plugin-visualizer": "^5.12.0",
 		"sass": "^1.72.0",
+		"terser": "^5.29.2",
 		"typescript": "^5.4.2",
-		"vite": "^5.1.6",
+		"vite": "^5.2.2",
 		"vite-plugin-cdn-import": "^0.3.5",
 		"vite-plugin-compression": "^0.5.1",
 		"vite-plugin-vue-setup-extend-plus": "^0.1.0",

+ 14 - 18
Web/vite.config.ts

@@ -7,6 +7,7 @@ import { buildConfig } from './src/utils/build';
 import vueJsx from '@vitejs/plugin-vue-jsx';
 import { CodeInspectorPlugin } from 'code-inspector-plugin';
 import fs from 'fs';
+import { visualizer } from 'rollup-plugin-visualizer';
 
 const pathResolve = (dir: string) => {
 	return resolve(__dirname, '.', dir);
@@ -22,6 +23,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 	fs.writeFileSync('./public/config.js', `window.__env__ = ${JSON.stringify(env, null, 2)} `);
 	return {
 		plugins: [
+			visualizer({ open: true }), // 自动开启分析页面
 			CodeInspectorPlugin({
 				bundler: 'vite',
 				hotKeys: ['shiftKey'],
@@ -30,13 +32,12 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 			vueJsx(),
 			vueSetupExtend(),
 			viteCompression({
-				verbose: true, // 默认即可
-				disable: false, // 开启压缩(不禁用),默认即可
-				deleteOriginFile: false, // 删除源文件
-				// 对所有大于 5KB 的文件进行 gzip 压缩
-				threshold: 5120, // the unit is Bytes
-				algorithm: 'gzip', // 压缩算法
-				ext: '.gz', // 文件类型
+				verbose: true, // 是否在控制台中输出压缩结果
+				disable: false, // 是否禁用压缩
+				deleteOriginFile: true, // 压缩后是否删除源文件
+				threshold: 5120, // 对大于 5KB 文件进行 gzip 压缩,单位Bytes
+				algorithm: 'gzip', // 压缩算法,可选[‘gzip’,‘brotliCompress’,‘deflate’,‘deflateRaw’]
+				ext: '.gz', // 生成的压缩包的后缀
 			}),
 			JSON.parse(env.VITE_OPEN_CDN) ? buildConfig.cdn() : null,
 		],
@@ -50,12 +51,6 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 			open: JSON.parse(env.VITE_OPEN),
 			hmr: true,
 			proxy: {
-				'/gitee': {
-					target: 'https://gitee.com',
-					ws: true,
-					changeOrigin: true,
-					rewrite: (path) => path.replace(/^\/gitee/, ''),
-				},
 				'^/[Uu]pload': {
 					target: env.VITE_API_URL,
 					changeOrigin: true,
@@ -67,18 +62,19 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
 			chunkSizeWarningLimit: 1500,
 			assetsInlineLimit: 5000, // 小于此阈值的导入或引用资源将内联为 base64 编码
 			sourcemap: false, // 构建后是否生成 source map 文件
+			extractComments: false, // 移除注释
+			minify: 'terser', // 启用后 terserOptions 配置才有效
 			terserOptions: {
 				compress: {
-					//生产环境时移除console
-					drop_console: true,
+					drop_console: true, // 生产环境时移除console
 					drop_debugger: true,
 				},
 			},
 			rollupOptions: {
 				output: {
-					chunkFileNames: 'assets/js/[name]-[hash].js',
-					entryFileNames: 'assets/js/[name]-[hash].js',
-					assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
+					chunkFileNames: 'assets/js/[name]-[hash].js', // 引入文件名的名称
+					entryFileNames: 'assets/js/[name]-[hash].js', // 包的入口文件名称
+					assetFileNames: 'assets/[ext]/[name]-[hash].[ext]', // 资源文件像 字体,图片等
 					manualChunks(id) {
 						if (id.includes('node_modules')) {
 							let newId = id.toString().replace('/.', '/');