diff --git a/CHANGELOG.md b/CHANGELOG.md
index 40352f28..20b0a7c4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## [3.1.1](https://github.com/WeBankFinTech/fes.js/compare/v3.0.19...v3.1.1) (2023-12-14)
+
+
+### Features
+
+* 升级 vite5 ([#222](https://github.com/WeBankFinTech/fes.js/issues/222)) ([fec7a8f](https://github.com/WeBankFinTech/fes.js/commit/fec7a8f1ae8685c7ef91ab60499166ae0fb22fb8))
+
+
+
 # [3.1.0](https://github.com/WeBankFinTech/fes.js/compare/v3.0.19...v3.1.0) (2023-12-14)
 
 
diff --git a/package.json b/package.json
index 08465453..78fe1388 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "fes.js",
-    "version": "3.1.0",
+    "version": "3.1.1",
     "description": "一个好用的前端管理台快速开发框架",
     "preferGlobal": true,
     "private": true,
diff --git a/packages/fes-builder-vite/package.json b/packages/fes-builder-vite/package.json
index 0c507fc0..226ad141 100644
--- a/packages/fes-builder-vite/package.json
+++ b/packages/fes-builder-vite/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@fesjs/builder-vite",
-    "version": "4.0.0",
+    "version": "4.0.1",
     "description": "@fesjs/builder-vite",
     "author": "qlin",
     "license": "MIT",
@@ -25,7 +25,7 @@
         "access": "public"
     },
     "peerDependencies": {
-        "@fesjs/fes": "^3.1.6",
+        "@fesjs/fes": "^3.1.7",
         "core-js": "^3.29.1"
     },
     "dependencies": {
diff --git a/packages/fes-builder-webpack/package.json b/packages/fes-builder-webpack/package.json
index f1366e40..9dd6f1ff 100644
--- a/packages/fes-builder-webpack/package.json
+++ b/packages/fes-builder-webpack/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@fesjs/builder-webpack",
-    "version": "3.0.7",
+    "version": "3.0.8",
     "description": "@fesjs/builder-webpack",
     "main": "lib/index.js",
     "types": "types.d.ts",
@@ -66,7 +66,7 @@
         "webpackbar": "^5.0.2"
     },
     "peerDependencies": {
-        "@fesjs/fes": "^3.1.6",
+        "@fesjs/fes": "^3.1.7",
         "core-js": "^3.29.1"
     }
 }
diff --git a/packages/fes-preset-built-in/package.json b/packages/fes-preset-built-in/package.json
index 9da6c9f9..c02a9869 100644
--- a/packages/fes-preset-built-in/package.json
+++ b/packages/fes-preset-built-in/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@fesjs/preset-built-in",
-    "version": "3.1.6",
+    "version": "3.1.7",
     "description": "@fesjs/preset-built-in",
     "main": "lib/index.js",
     "types": "lib/index.d.ts",
diff --git a/packages/fes/package.json b/packages/fes/package.json
index 3e78b61e..15277715 100644
--- a/packages/fes/package.json
+++ b/packages/fes/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@fesjs/fes",
-    "version": "3.1.6",
+    "version": "3.1.7",
     "description": "一个好用的前端管理台快速开发框架",
     "preferGlobal": true,
     "scripts": {
@@ -39,7 +39,7 @@
     ],
     "dependencies": {
         "@fesjs/compiler": "^3.0.2",
-        "@fesjs/preset-built-in": "^3.1.6",
+        "@fesjs/preset-built-in": "^3.1.7",
         "@fesjs/runtime": "^3.0.0",
         "@fesjs/utils": "^3.0.1",
         "pirates": "^4.0.5",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0dfbc14a..d2f96ccf 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,5 +1,9 @@
 lockfileVersion: '6.0'
 
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false
+
 importers:
 
   .:
@@ -93,7 +97,7 @@ importers:
         specifier: ^3.0.2
         version: link:../fes-compiler
       '@fesjs/preset-built-in':
-        specifier: ^3.1.6
+        specifier: ^3.1.7
         version: link:../fes-preset-built-in
       '@fesjs/runtime':
         specifier: ^3.0.0
@@ -117,7 +121,7 @@ importers:
         specifier: ^7.23.3
         version: 7.23.3
       '@fesjs/fes':
-        specifier: ^3.1.6
+        specifier: ^3.1.7
         version: link:../fes
       '@fesjs/utils':
         specifier: ^3.0.1
@@ -222,7 +226,7 @@ importers:
         specifier: ^7.23.2
         version: 7.23.2(@babel/core@7.23.2)
       '@fesjs/fes':
-        specifier: ^3.1.6
+        specifier: ^3.1.7
         version: link:../fes
       '@fesjs/utils':
         specifier: ^3.0.1
@@ -259,7 +263,7 @@ importers:
         version: 6.7.3(webpack@5.87.0)
       css-minimizer-webpack-plugin:
         specifier: ^5.0.0
-        version: 5.0.0(@swc/css@0.0.20)(webpack@5.87.0)
+        version: 5.0.0(webpack@5.87.0)
       fs-extra:
         specifier: ^11.1.1
         version: 11.1.1
@@ -298,13 +302,13 @@ importers:
         version: 3.3.2(webpack@5.87.0)
       terser-webpack-plugin:
         specifier: ^5.3.6
-        version: 5.3.7(@swc/core@1.3.49)(webpack@5.87.0)
+        version: 5.3.7(webpack@5.87.0)
       vue-loader:
         specifier: ^17.0.1
         version: 17.0.1(vue@3.3.4)(webpack@5.87.0)
       webpack:
         specifier: ^5.87.0
-        version: 5.87.0(@swc/core@1.3.49)
+        version: 5.87.0
       webpack-5-chain:
         specifier: ^8.0.1
         version: 8.0.1
@@ -6659,7 +6663,7 @@ packages:
       '@babel/core': 7.23.2
       find-cache-dir: 3.3.2
       schema-utils: 4.0.1
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /babel-plugin-istanbul@6.1.1:
@@ -7617,7 +7621,7 @@ packages:
       normalize-path: 3.0.0
       schema-utils: 4.0.1
       serialize-javascript: 6.0.1
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /core-js-compat@3.33.2:
@@ -7747,7 +7751,7 @@ packages:
       postcss-modules-values: 4.0.0(postcss@8.4.21)
       postcss-value-parser: 4.2.0
       semver: 7.5.0
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /css-minimizer-webpack-plugin@5.0.0(@swc/css@0.0.20)(webpack@5.87.0):
@@ -7785,6 +7789,40 @@ packages:
       webpack: 5.87.0(@swc/core@1.3.49)
     dev: false
 
+  /css-minimizer-webpack-plugin@5.0.0(webpack@5.87.0):
+    resolution: {integrity: sha512-1wZ/PYvg+ZKwi5FX6YrvbB31jMAdurS+CmRQLwWCVSlfzJC85l/a6RVICqUHFa+jXyhilfnCyjafzJGbmz5tcA==}
+    engines: {node: '>= 14.15.0'}
+    peerDependencies:
+      '@parcel/css': '*'
+      '@swc/css': '*'
+      clean-css: '*'
+      csso: '*'
+      esbuild: '*'
+      lightningcss: '*'
+      webpack: ^5.0.0
+    peerDependenciesMeta:
+      '@parcel/css':
+        optional: true
+      '@swc/css':
+        optional: true
+      clean-css:
+        optional: true
+      csso:
+        optional: true
+      esbuild:
+        optional: true
+      lightningcss:
+        optional: true
+    dependencies:
+      cssnano: 6.0.0(postcss@8.4.21)
+      jest-worker: 29.5.0
+      postcss: 8.4.21
+      schema-utils: 4.0.1
+      serialize-javascript: 6.0.1
+      source-map: 0.6.1
+      webpack: 5.87.0
+    dev: false
+
   /css-select@4.3.0:
     resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
     dependencies:
@@ -9638,7 +9676,7 @@ packages:
       lodash: 4.17.21
       pretty-error: 4.0.0
       tapable: 2.2.0
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /html-webpack-tags-plugin@3.0.0:
@@ -10865,7 +10903,7 @@ packages:
     dependencies:
       klona: 2.0.6
       less: 4.1.3
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /less@4.1.3:
@@ -11326,7 +11364,7 @@ packages:
       webpack: ^5.0.0
     dependencies:
       schema-utils: 4.0.1
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /minimalistic-assert@1.0.1:
@@ -11426,7 +11464,7 @@ packages:
     dependencies:
       loader-utils: 2.0.4
       monaco-editor: 0.36.1
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /monaco-editor@0.36.1:
@@ -12143,7 +12181,7 @@ packages:
       klona: 2.0.6
       postcss: 8.4.21
       semver: 7.5.0
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /postcss-merge-longhand@6.0.0(postcss@8.4.21):
@@ -12961,7 +12999,7 @@ packages:
       klona: 2.0.6
       neo-async: 2.6.2
       sass: 1.32.11
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /sass@1.32.11:
@@ -13504,7 +13542,7 @@ packages:
     peerDependencies:
       webpack: ^5.0.0
     dependencies:
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /stylehacks@6.0.0(postcss@8.4.21):
@@ -13618,6 +13656,30 @@ packages:
       webpack: 5.87.0(@swc/core@1.3.49)
     dev: false
 
+  /terser-webpack-plugin@5.3.7(webpack@5.87.0):
+    resolution: {integrity: sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==}
+    engines: {node: '>= 10.13.0'}
+    peerDependencies:
+      '@swc/core': '*'
+      esbuild: '*'
+      uglify-js: '*'
+      webpack: ^5.1.0
+    peerDependenciesMeta:
+      '@swc/core':
+        optional: true
+      esbuild:
+        optional: true
+      uglify-js:
+        optional: true
+    dependencies:
+      '@jridgewell/trace-mapping': 0.3.18
+      jest-worker: 27.5.1
+      schema-utils: 3.1.2
+      serialize-javascript: 6.0.1
+      terser: 5.16.8
+      webpack: 5.87.0
+    dev: false
+
   /terser@5.16.8:
     resolution: {integrity: sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==}
     engines: {node: '>=10'}
@@ -14267,7 +14329,7 @@ packages:
       hash-sum: 2.0.0
       loader-utils: 2.0.4
       vue: 3.3.4
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /vue-router@4.1.6(vue@3.2.47):
@@ -14379,7 +14441,7 @@ packages:
       mime-types: 2.1.35
       range-parser: 1.2.1
       schema-utils: 4.0.1
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /webpack-dev-server@4.15.1(webpack@5.87.0):
@@ -14423,7 +14485,7 @@ packages:
       serve-index: 1.9.1
       sockjs: 0.3.24
       spdy: 4.0.2
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
       webpack-dev-middleware: 5.3.3(webpack@5.87.0)
       ws: 8.13.0
     transitivePeerDependencies:
@@ -14442,6 +14504,46 @@ packages:
     resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==}
     dev: false
 
+  /webpack@5.87.0:
+    resolution: {integrity: sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==}
+    engines: {node: '>=10.13.0'}
+    hasBin: true
+    peerDependencies:
+      webpack-cli: '*'
+    peerDependenciesMeta:
+      webpack-cli:
+        optional: true
+    dependencies:
+      '@types/eslint-scope': 3.7.4
+      '@types/estree': 1.0.1
+      '@webassemblyjs/ast': 1.11.6
+      '@webassemblyjs/wasm-edit': 1.11.6
+      '@webassemblyjs/wasm-parser': 1.11.6
+      acorn: 8.8.2
+      acorn-import-assertions: 1.9.0(acorn@8.8.2)
+      browserslist: 4.21.5
+      chrome-trace-event: 1.0.3
+      enhanced-resolve: 5.15.0
+      es-module-lexer: 1.3.0
+      eslint-scope: 5.1.1
+      events: 3.3.0
+      glob-to-regexp: 0.4.1
+      graceful-fs: 4.2.11
+      json-parse-even-better-errors: 2.3.1
+      loader-runner: 4.3.0
+      mime-types: 2.1.35
+      neo-async: 2.6.2
+      schema-utils: 3.3.0
+      tapable: 2.2.0
+      terser-webpack-plugin: 5.3.7(webpack@5.87.0)
+      watchpack: 2.4.0
+      webpack-sources: 3.2.3
+    transitivePeerDependencies:
+      - '@swc/core'
+      - esbuild
+      - uglify-js
+    dev: false
+
   /webpack@5.87.0(@swc/core@1.3.49):
     resolution: {integrity: sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==}
     engines: {node: '>=10.13.0'}
@@ -14492,7 +14594,7 @@ packages:
       consola: 2.15.3
       pretty-time: 1.1.0
       std-env: 3.3.2
-      webpack: 5.87.0(@swc/core@1.3.49)
+      webpack: 5.87.0
     dev: false
 
   /websocket-driver@0.7.4:
@@ -14762,7 +14864,3 @@ packages:
   /yocto-queue@1.0.0:
     resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
     engines: {node: '>=12.20'}
-
-settings:
-  autoInstallPeers: true
-  excludeLinksFromLockfile: false