befly-vite 1.40.0 → 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +40 -9
  2. package/index.js +10 -0
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -82,17 +82,18 @@ export default createBeflyViteConfig();
82
82
  8. `build.assetsDir = "assets"`
83
83
  9. `build.cssMinify = "lightningcss"`
84
84
  10. `css.transformer = "lightningcss"`
85
- 11. 默认 CSS 浏览器基线:Chrome 107 / Edge 107 / Firefox 104 / Safari 16.0
85
+ 11. 默认 CSS 浏览器基线:Chrome 107 / Edge 107 / Firefox 104 / Safari 16.010. 默认启用 `@vitejs/plugin-legacy` 对旧浏览器做 JS polyfill
86
86
 
87
87
  ### 参数说明
88
88
 
89
- | 参数 | 类型 | 默认值 | 作用 |
90
- | -------------- | -------------------- | --------------- | ---------------------------------------------------- |
91
- | `root` | `string` | `process.cwd()` | 项目根目录,用于解析 `src`、扫描 `views` 和生成别名 |
92
- | `analyzer` | `boolean` | `false` | 是否启用打包分析,并输出到 `<root>/temp/analyzer` |
93
- | `resolvers` | `Object \| Object[]` | `undefined` | 追加到组件自动注册中的自定义 resolver |
94
- | `manualChunks` | `Function \| Object` | `undefined` | 便捷写入 `build.rolldownOptions.output.manualChunks` |
95
- | `viteConfig` | `Object` | `{}` | 最终合并到默认配置上的 Vite 原生配置 |
89
+ | 参数 | 类型 | 默认值 | 作用 |
90
+ | -------------- | -------------------- | --------------- | ------------------------------------------------------------ |
91
+ | `root` | `string` | `process.cwd()` | 项目根目录,用于解析 `src`、扫描 `views` 和生成别名 |
92
+ | `analyzer` | `boolean` | `false` | 是否启用打包分析,并输出到 `<root>/temp/analyzer` |
93
+ | `legacy` | `boolean \| object` | `true` | 是否启用 `@vitejs/plugin-legacy`,默认自动 polyfill 旧浏览器 |
94
+ | `resolvers` | `Object \| Object[]` | `undefined` | 追加到组件自动注册中的自定义 resolver |
95
+ | `manualChunks` | `Function \| Object` | `undefined` | 便捷写入 `build.rolldownOptions.output.manualChunks` |
96
+ | `viteConfig` | `Object` | `{}` | 最终合并到默认配置上的 Vite 原生配置 |
96
97
 
97
98
  ### 参数细节
98
99
 
@@ -129,6 +130,36 @@ export default createBeflyViteConfig({
129
130
 
130
131
  适合:分析打包体积、依赖拆分和大包来源。
131
132
 
133
+ #### legacy
134
+
135
+ 默认启用 `@vitejs/plugin-legacy`,自动注入 `core-js` 等 polyfill,解决旧浏览器不支持 `Array.prototype.toSorted` 等现代 JS API 的问题。
136
+
137
+ ```javascript
138
+ import { createBeflyViteConfig } from "befly-vite";
139
+
140
+ // 使用默认配置
141
+ export default createBeflyViteConfig();
142
+
143
+ // 关闭 legacy
144
+ export default createBeflyViteConfig({
145
+ legacy: false
146
+ });
147
+
148
+ // 自定义 legacy 配置
149
+ export default createBeflyViteConfig({
150
+ legacy: {
151
+ targets: ["iOS >= 14", "Safari >= 14", "Chrome >= 109"],
152
+ modernPolyfills: true
153
+ }
154
+ });
155
+ ```
156
+
157
+ 说明:
158
+
159
+ 1. 默认目标为 `["defaults", "not IE 11"]`,并开启 `modernPolyfills`。
160
+ 2. 传 `false` 可完全关闭 legacy 插件,减少构建产物体积。
161
+ 3. 传对象时,会与默认配置完全替换,而不是合并。
162
+
132
163
  #### resolvers
133
164
 
134
165
  `befly-vite` 默认内置:
@@ -527,7 +558,7 @@ const finalRoutes = Layouts(routes, "/dashboard", function (layoutName) {
527
558
 
528
559
  ### 最常见脚本写法
529
560
 
530
- 页面项目自己的 `package.json` 在这里主要只保留运行脚本;在 Befly 仓库内,`lint` / `format` 的配置文件、根脚本和提交钩子统一跟随仓库根 `oxfmt.config.js` / `oxlint.config.ts` 与共享 Oxc 基线,不要在基于 `befly-vite` 的页面包里再复制第二套可执行 Oxc 配置。
561
+ 页面项目自己的 `package.json` 在这里主要只保留运行脚本;在 Befly 仓库内,`lint` / `format` 的配置文件、根脚本和提交钩子统一跟随仓库根 `oxfmt.config.js` / `oxlint.config.js` 与共享 Oxc 基线,不要在基于 `befly-vite` 的页面包里再复制第二套可执行 Oxc 配置。
531
562
 
532
563
  ```json
533
564
  {
package/index.js CHANGED
@@ -2,6 +2,7 @@ import { existsSync, realpathSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { fileURLToPath } from "node:url";
4
4
 
5
+ import legacyPlugin from "@vitejs/plugin-legacy";
5
6
  import vue from "@vitejs/plugin-vue";
6
7
  import { TDesignResolver } from "unplugin-vue-components/resolvers";
7
8
  import Components from "unplugin-vue-components/vite";
@@ -18,6 +19,10 @@ const DEFAULT_LIGHTNINGCSS_TARGETS = {
18
19
  ios_saf: 16 << 16,
19
20
  safari: 16 << 16
20
21
  };
22
+ const DEFAULT_LEGACY_OPTIONS = {
23
+ targets: ["defaults", "not IE 11"],
24
+ modernPolyfills: true
25
+ };
21
26
 
22
27
  function normalizeResolvers(resolvers) {
23
28
  if (resolvers === null || resolvers === undefined) {
@@ -71,6 +76,7 @@ export function createBeflyViteConfig(options = {}) {
71
76
  //
72
77
  root,
73
78
  analyzer = false,
79
+ legacy = true,
74
80
  resolvers,
75
81
  manualChunks,
76
82
  viteConfig = {}
@@ -102,6 +108,10 @@ export function createBeflyViteConfig(options = {}) {
102
108
  })
103
109
  );
104
110
  plugins.push(createComponentsPlugin({ resolvers: resolvers }));
111
+ if (legacy !== false) {
112
+ const legacyOptions = legacy === true ? DEFAULT_LEGACY_OPTIONS : legacy;
113
+ plugins.push(...legacyPlugin(legacyOptions));
114
+ }
105
115
  if (analyzer) {
106
116
  plugins.push(
107
117
  bundleAnalyzer({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "befly-vite",
3
- "version": "1.40.0",
3
+ "version": "1.42.0",
4
4
  "gitHead": "282f7accca9c8d55956a5490c0365cce4a1ad90d",
5
5
  "private": false,
6
6
  "description": "Befly Vite 配置预设和插件集合",
@@ -37,10 +37,11 @@
37
37
  "registry": "https://registry.npmjs.org"
38
38
  },
39
39
  "dependencies": {
40
+ "@vitejs/plugin-legacy": "^6.1.0",
40
41
  "@vitejs/plugin-vue": "^6.0.7",
41
42
  "sass-embedded": "^1.100.0",
42
43
  "unplugin-vue-components": "^32.1.0",
43
- "vite": "^8.1.3",
44
+ "vite": "^8.1.4",
44
45
  "vite-bundle-analyzer": "^1.3.8",
45
46
  "vue-router": "^5.1.0"
46
47
  },