gc_i18n 1.4.4 → 1.4.6
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.
- package/.qoder/repowiki/zh/content/API /345/217/202/350/200/203.md" +55 -10
- package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/272/223/345/256/236/347/216/260.md +87 -2
- package/.qoder/repowiki/zh/content//351/253/230/347/272/247/347/224/250/346/263/225//344/276/235/350/265/226/347/256/241/347/220/206/347/255/226/347/225/245.md +53 -32
- package/.qoder/repowiki/zh/meta/repowiki-metadata.json +1 -1
- package/lib/gc_i18n.es.js +2 -27
- package/lib/gc_i18n.umd.js +1 -1
- package/package.json +3 -3
- package/packages/index.js +4 -29
|
@@ -2,25 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
<cite>
|
|
4
4
|
**本文档中引用的文件**
|
|
5
|
+
- [package.json](file://package.json) - *版本信息,从1.4.3升级到1.4.4*
|
|
5
6
|
- [gc_i18n.es.js](file://lib/gc_i18n.es.js) - *在最近的提交中更新*
|
|
6
7
|
- [i18nUtils.ts](file://packages/libs/i18nUtils.ts) - *在最近的提交中更新*
|
|
7
8
|
- [service.js](file://packages/libs/service.js) - *在最近的提交中更新,包含关键逻辑变更*
|
|
8
9
|
- [utils.js](file://packages/libs/utils.js) - *在最近的提交中更新,包含 mergeArraysByKey 函数*
|
|
9
10
|
- [packages/index.js](file://packages/index.js) - *库的入口点,包含初始化逻辑*
|
|
10
|
-
- [package.json](file://package.json) - *版本信息,从1.3.12升级到1.4.1*
|
|
11
11
|
</cite>
|
|
12
12
|
|
|
13
13
|
## 更新摘要
|
|
14
14
|
**变更内容**
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- 更新了 `
|
|
18
|
-
- 更新了 `
|
|
19
|
-
-
|
|
20
|
-
- 修正了 `service.js` 中 `fetchTranslate` 和 `getTranslate` 方法的返回值描述,使其与代码实现一致
|
|
15
|
+
- 版本从 1.4.3 升级到 1.4.4
|
|
16
|
+
- 更新了 `packages/index.js` 中路由守卫的 `closeModal` 功能集成
|
|
17
|
+
- 更新了 `gc_i18n.es.js` 中 `$t` 方法的文档,详细说明了其新的查找优先级
|
|
18
|
+
- 更新了 `utils.js` 中 `mergeArraysByKey` 函数的文档
|
|
19
|
+
- 修正了 `service.js` 中 `fetchTranslate` 和 `getTranslate` 方法的返回值描述
|
|
21
20
|
- 更新了所有受影响部分的源代码引用,以反映最新的文件状态
|
|
22
|
-
- **新增**:标准化了后端翻译服务端点,从 `i18n-web//app/getsupportedlangs` 迁移到 `i18n-web/app/getsupportedlangs`
|
|
23
|
-
- **新增**:引入了 `getLanguagesWithCache` 函数,提供带缓存的语言列表获取功能
|
|
24
21
|
|
|
25
22
|
## 目录
|
|
26
23
|
1. [简介](#简介)
|
|
@@ -40,6 +37,7 @@
|
|
|
40
37
|
- **语言切换**:通过 `$changeLocale` 方法动态切换当前语言环境。
|
|
41
38
|
- **语言包管理**:通过 `service.js` 提供的接口从后端获取和更新翻译资源。
|
|
42
39
|
- **工具支持**:提供静态分析工具函数,用于提取项目中的翻译键。
|
|
40
|
+
- **模态框关闭**:通过 `closeModal` 方法统一管理 SweetAlert2 模态框的关闭。
|
|
43
41
|
|
|
44
42
|
**Section sources**
|
|
45
43
|
- [gc_i18n.es.js](file://lib/gc_i18n.es.js)
|
|
@@ -116,6 +114,41 @@ $changeLocale(locale: string): Promise<void>
|
|
|
116
114
|
- [src/view/Home.vue](file://src/view/Home.vue#L2)
|
|
117
115
|
- [src/view/login.vue](file://src/view/login.vue#L2)
|
|
118
116
|
|
|
117
|
+
### closeModal (关闭模态框方法)
|
|
118
|
+
此方法用于统一关闭 SweetAlert2 弹窗,确保模态框的正确销毁和资源清理。
|
|
119
|
+
|
|
120
|
+
**方法签名**
|
|
121
|
+
```typescript
|
|
122
|
+
closeModal(): void
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**参数**
|
|
126
|
+
- 无参数
|
|
127
|
+
|
|
128
|
+
**返回值**
|
|
129
|
+
- `void` - 无返回值
|
|
130
|
+
|
|
131
|
+
**副作用**
|
|
132
|
+
- 关闭当前显示的 SweetAlert2 弹窗
|
|
133
|
+
- 清理弹窗相关的事件监听器和 DOM 元素
|
|
134
|
+
- 触发 `willClose` 和 `didClose` 事件回调
|
|
135
|
+
- 释放内存资源,防止内存泄漏
|
|
136
|
+
|
|
137
|
+
**使用限制**
|
|
138
|
+
- 仅在 SweetAlert2 弹窗处于激活状态时有效
|
|
139
|
+
- 调用后会触发弹窗的销毁流程,无法恢复
|
|
140
|
+
|
|
141
|
+
**错误处理建议**
|
|
142
|
+
- 确保在调用前检查弹窗是否已激活
|
|
143
|
+
- 监听 `willClose` 和 `didClose` 事件以处理关闭后的逻辑
|
|
144
|
+
- 在路由切换时自动调用此方法,避免弹窗残留
|
|
145
|
+
|
|
146
|
+
**新增** 该方法作为 SweetAlert2 的别名方法,提供统一的模态框关闭接口。
|
|
147
|
+
|
|
148
|
+
**Section sources**
|
|
149
|
+
- [gc_i18n.es.js:1340-1350](file://lib/gc_i18n.es.js#L1340-L1350) - *新增 closeModal 方法实现*
|
|
150
|
+
- [gc_i18n.es.js:1930-1932](file://lib/gc_i18n.es.js#L1930-L1932) - *closeModal 方法别名注册*
|
|
151
|
+
|
|
119
152
|
## i18nUtils.ts 工具函数
|
|
120
153
|
`i18nUtils.ts` 文件提供了一个用于静态分析的工具函数,帮助开发者管理和审计翻译资源。
|
|
121
154
|
|
|
@@ -363,6 +396,16 @@ const keys = extractTranslationKeys(MyComponent);
|
|
|
363
396
|
console.log(keys); // 输出: ["hello", "greeting"]
|
|
364
397
|
```
|
|
365
398
|
|
|
399
|
+
### 路由守卫中集成 closeModal
|
|
400
|
+
```javascript
|
|
401
|
+
// 在路由守卫中自动关闭模态框
|
|
402
|
+
this.router.beforeEach(async (to, from, next) => {
|
|
403
|
+
// 自动关闭配置中心弹窗
|
|
404
|
+
this.configInstance && this.configInstance.closeModal();
|
|
405
|
+
// 其他路由逻辑...
|
|
406
|
+
});
|
|
407
|
+
```
|
|
408
|
+
|
|
366
409
|
## 错误处理与限制
|
|
367
410
|
- **网络错误**: `service.js` 中的所有异步方法都可能因网络问题而失败。务必使用 `try-catch` 或 `.catch()` 处理 Promise 拒绝。
|
|
368
411
|
- **缓存失效**: `getTranslate` 依赖本地存储。如果用户清除浏览器数据,缓存将丢失,需要重新下载完整语言包。
|
|
@@ -371,5 +414,7 @@ console.log(keys); // 输出: ["hello", "greeting"]
|
|
|
371
414
|
- **逻辑变更**: `getTranslate` 方法现在会移除 `common` 键覆盖的当前路由数据,这可能会影响某些依赖于特定键的组件。
|
|
372
415
|
- **参数变更**: `fetchTranslate` 函数已移除 `page` 参数,使用时请注意更新调用方式。
|
|
373
416
|
- **端点标准化**: 所有翻译服务端点已标准化为 `/i18n-web/...` 结构,确保了后端服务的一致性。
|
|
417
|
+
- **模态框管理**: 新增的 `closeModal` 方法提供了统一的 SweetAlert2 弹窗管理,避免了弹窗残留问题。
|
|
418
|
+
- **版本更新** 本版本为 1.4.4,包含上述重要变更,特别是路由守卫中自动调用 `closeModal` 的功能集成。
|
|
374
419
|
|
|
375
|
-
**版本更新** 本版本为 1.4.
|
|
420
|
+
**版本更新** 本版本为 1.4.4,包含上述重要变更,特别是路由守卫中自动调用 `closeModal` 的功能集成。
|
package/.qoder/repowiki/zh/content//346/240/270/345/277/203/345/272/223/345/256/236/347/216/260.md
CHANGED
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
- **安全机制改进**,新增JWT令牌验证和权限控制
|
|
44
44
|
- **SweetAlert2集成优化**,改进变量命名和代码组织结构,提升可读性和维护性
|
|
45
45
|
- **新增智能语言列表缓存机制**,通过getLanguagesWithCache提供缓存和自动失效功能
|
|
46
|
+
- **新增postMessage事件处理功能**,扩展了原有的updateLanguage事件处理机制,允许外部应用程序通过postMessage事件编程关闭模态框
|
|
46
47
|
|
|
47
48
|
## 目录
|
|
48
49
|
1. [项目结构分析](#项目结构分析)
|
|
@@ -272,7 +273,7 @@ function _r(e, t) {
|
|
|
272
273
|
|
|
273
274
|
### 事件通知机制
|
|
274
275
|
|
|
275
|
-
事件通知通过自定义事件系统实现,使用mitt
|
|
276
|
+
**更新** 事件通知通过自定义事件系统实现,使用mitt事件发射器,新增了closeModal事件处理功能:
|
|
276
277
|
|
|
277
278
|
```javascript
|
|
278
279
|
install(app, opts = {}) {
|
|
@@ -284,6 +285,10 @@ install(app, opts = {}) {
|
|
|
284
285
|
if (event.data.type === "updateLanguage") {
|
|
285
286
|
location.reload();
|
|
286
287
|
}
|
|
288
|
+
// 新增:监听关闭弹窗消息
|
|
289
|
+
if (event.data.type === "closeModal") {
|
|
290
|
+
this.configInstance && this.configInstance.closeModal();
|
|
291
|
+
}
|
|
287
292
|
});
|
|
288
293
|
}
|
|
289
294
|
```
|
|
@@ -533,6 +538,10 @@ install(app, opts = {}) {
|
|
|
533
538
|
if (event.data.type === "updateLanguage") {
|
|
534
539
|
location.reload();
|
|
535
540
|
}
|
|
541
|
+
// 新增:监听关闭弹窗消息
|
|
542
|
+
if (event.data.type === "closeModal") {
|
|
543
|
+
this.configInstance && this.configInstance.closeModal();
|
|
544
|
+
}
|
|
536
545
|
});
|
|
537
546
|
}
|
|
538
547
|
```
|
|
@@ -1760,4 +1769,80 @@ div:where(.swal2-container) button:where(.swal2-close):focus-visible {
|
|
|
1760
1769
|
- [lib/gc_i18n.css](file://lib/gc_i18n.css)
|
|
1761
1770
|
- [packages/libs/textEditMode.css:1-166](file://packages/libs/textEditMode.css#L1-L166)
|
|
1762
1771
|
- [packages/swal.css:1-18](file://packages/swal.css#L1-L18)
|
|
1763
|
-
- [packages/index.js:338-343](file://packages/index.js#L338-L343)
|
|
1772
|
+
- [packages/index.js:338-343](file://packages/index.js#L338-L343)
|
|
1773
|
+
|
|
1774
|
+
## PostMessage事件处理功能
|
|
1775
|
+
|
|
1776
|
+
**新增** I18n类现在支持通过postMessage事件编程控制模态框的关闭,扩展了原有的updateLanguage事件处理机制。
|
|
1777
|
+
|
|
1778
|
+
### 事件处理机制
|
|
1779
|
+
|
|
1780
|
+
I18n类通过window.addEventListener监听postMessage事件,支持两种类型的事件:
|
|
1781
|
+
|
|
1782
|
+
```javascript
|
|
1783
|
+
window.addEventListener("message", (event) => {
|
|
1784
|
+
if (event.data.type === "updateLanguage") {
|
|
1785
|
+
location.reload();
|
|
1786
|
+
}
|
|
1787
|
+
// 新增:监听关闭弹窗消息
|
|
1788
|
+
if (event.data.type === "closeModal") {
|
|
1789
|
+
this.configInstance && this.configInstance.closeModal();
|
|
1790
|
+
}
|
|
1791
|
+
});
|
|
1792
|
+
```
|
|
1793
|
+
|
|
1794
|
+
### 事件类型说明
|
|
1795
|
+
|
|
1796
|
+
#### updateLanguage事件
|
|
1797
|
+
|
|
1798
|
+
- **用途**: 触发语言更新,重新加载页面
|
|
1799
|
+
- **触发条件**: 接收到type为"updateLanguage"的消息
|
|
1800
|
+
- **行为**: 调用location.reload()重新加载当前页面
|
|
1801
|
+
|
|
1802
|
+
#### closeModal事件
|
|
1803
|
+
|
|
1804
|
+
- **用途**: 编程式关闭模态框
|
|
1805
|
+
- **触发条件**: 接收到type为"closeModal"的消息
|
|
1806
|
+
- **行为**: 调用configInstance.closeModal()关闭当前打开的配置模态框
|
|
1807
|
+
- **适用场景**: 外部应用程序需要程序化控制模态框的关闭
|
|
1808
|
+
|
|
1809
|
+
### 外部应用程序集成
|
|
1810
|
+
|
|
1811
|
+
外部应用程序可以通过postMessage API向目标窗口发送关闭模态框的指令:
|
|
1812
|
+
|
|
1813
|
+
```javascript
|
|
1814
|
+
// 向目标窗口发送关闭模态框指令
|
|
1815
|
+
targetWindow.postMessage({ type: "closeModal" }, "*");
|
|
1816
|
+
|
|
1817
|
+
// 或者指定目标源
|
|
1818
|
+
targetWindow.postMessage({ type: "closeModal" }, "https://your-domain.com");
|
|
1819
|
+
```
|
|
1820
|
+
|
|
1821
|
+
### 与Earth组件的协同
|
|
1822
|
+
|
|
1823
|
+
Earth组件同样支持closeModal事件处理,确保组件间的一致性:
|
|
1824
|
+
|
|
1825
|
+
```javascript
|
|
1826
|
+
const handleMessage = (event) => {
|
|
1827
|
+
if (event.data && event.data.type === "updateLanguage") {
|
|
1828
|
+
// 从 store 重新读取当前语言
|
|
1829
|
+
currentLocale.value = store2.get("I18N_LANGUAGE") || "zh-CN";
|
|
1830
|
+
}
|
|
1831
|
+
// Earth组件也支持closeModal事件
|
|
1832
|
+
if (event.data && event.data.type === "closeModal") {
|
|
1833
|
+
// Earth组件的关闭逻辑
|
|
1834
|
+
}
|
|
1835
|
+
};
|
|
1836
|
+
```
|
|
1837
|
+
|
|
1838
|
+
### 最佳实践
|
|
1839
|
+
|
|
1840
|
+
1. **事件类型区分**: 确保发送的事件类型正确,避免误触发
|
|
1841
|
+
2. **目标窗口确认**: 在生产环境中指定具体的目标源,提高安全性
|
|
1842
|
+
3. **错误处理**: 添加适当的错误处理机制,防止事件丢失
|
|
1843
|
+
4. **时机控制**: 在模态框真正打开后再发送closeModal事件
|
|
1844
|
+
|
|
1845
|
+
**本节来源**
|
|
1846
|
+
- [packages/index.js:546-555](file://packages/index.js#L546-L555)
|
|
1847
|
+
- [packages/components/earth.js:122-128](file://packages/components/earth.js#L122-L128)
|
|
1848
|
+
- [lib/gc_i18n.es.js:2868-2870](file://lib/gc_i18n.es.js#L2868-L2870)
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
- [README.md](file://README.md)
|
|
14
14
|
</cite>
|
|
15
15
|
|
|
16
|
+
## 更新摘要
|
|
17
|
+
**变更内容**
|
|
18
|
+
- 修复了 Vue i18n 依赖配置问题,将其从 devDependencies 移动到 dependencies
|
|
19
|
+
- 解决了下游项目依赖解析问题
|
|
20
|
+
- 更新了依赖管理策略以反映实际的运行时依赖需求
|
|
21
|
+
|
|
16
22
|
## 目录
|
|
17
23
|
1. [简介](#简介)
|
|
18
24
|
2. [项目结构](#项目结构)
|
|
@@ -36,6 +42,8 @@ gc_i18n 是一个基于 Vue 3 和 Vite 的国际化解决方案库。该项目
|
|
|
36
42
|
- 实现了智能的远程翻译资源管理
|
|
37
43
|
- 集成了实时多语言管理功能
|
|
38
44
|
|
|
45
|
+
**更新** 修复了 Vue i18n 依赖配置问题,确保其在生产环境中正确可用
|
|
46
|
+
|
|
39
47
|
## 项目结构
|
|
40
48
|
|
|
41
49
|
项目采用清晰的模块化组织结构,主要分为以下几个核心部分:
|
|
@@ -61,13 +69,13 @@ end
|
|
|
61
69
|
```
|
|
62
70
|
|
|
63
71
|
**图表来源**
|
|
64
|
-
- [package.json](file://package.json#L1-L48)
|
|
65
|
-
- [vite.config.js](file://vite.config.js#L1-L72)
|
|
66
|
-
- [packages/index.js](file://packages/index.js#L1-L418)
|
|
72
|
+
- [package.json:1-48](file://package.json#L1-L48)
|
|
73
|
+
- [vite.config.js:1-72](file://vite.config.js#L1-L72)
|
|
74
|
+
- [packages/index.js:1-418](file://packages/index.js#L1-L418)
|
|
67
75
|
|
|
68
76
|
**章节来源**
|
|
69
|
-
- [package.json](file://package.json#L1-L48)
|
|
70
|
-
- [vite.config.js](file://vite.config.js#L1-L72)
|
|
77
|
+
- [package.json:1-48](file://package.json#L1-L48)
|
|
78
|
+
- [vite.config.js:1-72](file://vite.config.js#L1-L72)
|
|
71
79
|
|
|
72
80
|
## 核心依赖分析
|
|
73
81
|
|
|
@@ -85,17 +93,17 @@ D[lodash-es] --> D1[工具函数]
|
|
|
85
93
|
E[store2] --> E1[本地存储]
|
|
86
94
|
F[sweetalert2] --> F1[模态框]
|
|
87
95
|
G[vue-demi] --> G1[Vue兼容层]
|
|
88
|
-
end
|
|
89
|
-
subgraph "国际化相关"
|
|
90
96
|
H[vue-i18n] --> H1[Vue国际化]
|
|
97
|
+
end
|
|
98
|
+
subgraph "框架相关"
|
|
91
99
|
I[vue] --> I1[Vue框架]
|
|
92
100
|
J[vue-router] --> J1[路由集成]
|
|
93
101
|
end
|
|
94
102
|
```
|
|
95
103
|
|
|
96
104
|
**图表来源**
|
|
97
|
-
- [package.json](file://package.json#L21-
|
|
98
|
-
- [packages/index.js](file://packages/index.js#L1-L50)
|
|
105
|
+
- [package.json:21-30](file://package.json#L21-L30)
|
|
106
|
+
- [packages/index.js:1-50](file://packages/index.js#L1-L50)
|
|
99
107
|
|
|
100
108
|
### 关键依赖特性
|
|
101
109
|
|
|
@@ -105,10 +113,13 @@ end
|
|
|
105
113
|
4. **lodash-es**: ES 模块版本的工具库,支持 Tree Shaking
|
|
106
114
|
5. **store2**: 提供本地存储功能,支持命名空间隔离
|
|
107
115
|
6. **sweetalert2**: 现代化的模态框组件,用于多语言管理界面
|
|
116
|
+
7. **vue-i18n**: 国际化核心依赖,现已正确配置为生产依赖
|
|
117
|
+
|
|
118
|
+
**更新** Vue i18n 现已从 devDependencies 移动到 dependencies,确保在生产环境中正确解析和使用
|
|
108
119
|
|
|
109
120
|
**章节来源**
|
|
110
|
-
- [package.json](file://package.json#L21-
|
|
111
|
-
- [packages/index.js](file://packages/index.js#L1-L50)
|
|
121
|
+
- [package.json:21-30](file://package.json#L21-L30)
|
|
122
|
+
- [packages/index.js:1-50](file://packages/index.js#L1-L50)
|
|
112
123
|
|
|
113
124
|
## 构建系统依赖管理
|
|
114
125
|
|
|
@@ -135,7 +146,7 @@ L --> O[lang/*]
|
|
|
135
146
|
```
|
|
136
147
|
|
|
137
148
|
**图表来源**
|
|
138
|
-
- [vite.config.js](file://vite.config.js#L20-L35)
|
|
149
|
+
- [vite.config.js:20-35](file://vite.config.js#L20-L35)
|
|
139
150
|
|
|
140
151
|
### 构建输出策略
|
|
141
152
|
|
|
@@ -145,8 +156,8 @@ L --> O[lang/*]
|
|
|
145
156
|
- **CSS 提取**: 独立的样式文件输出
|
|
146
157
|
|
|
147
158
|
**章节来源**
|
|
148
|
-
- [vite.config.js](file://vite.config.js#L10-L18)
|
|
149
|
-
- [vite.config.js](file://vite.config.js#L35-L50)
|
|
159
|
+
- [vite.config.js:10-18](file://vite.config.js#L10-L18)
|
|
160
|
+
- [vite.config.js:35-50](file://vite.config.js#L35-L50)
|
|
150
161
|
|
|
151
162
|
## 运行时依赖策略
|
|
152
163
|
|
|
@@ -174,7 +185,7 @@ end
|
|
|
174
185
|
```
|
|
175
186
|
|
|
176
187
|
**图表来源**
|
|
177
|
-
- [packages/libs/service.js](file://packages/libs/service.js#L87-L131)
|
|
188
|
+
- [packages/libs/service.js:87-131](file://packages/libs/service.js#L87-L131)
|
|
178
189
|
|
|
179
190
|
### 动态模块加载
|
|
180
191
|
|
|
@@ -191,11 +202,11 @@ F --> G[应用翻译]
|
|
|
191
202
|
```
|
|
192
203
|
|
|
193
204
|
**图表来源**
|
|
194
|
-
- [packages/index.js](file://packages/index.js#L148-L239)
|
|
205
|
+
- [packages/index.js:148-239](file://packages/index.js#L148-L239)
|
|
195
206
|
|
|
196
207
|
**章节来源**
|
|
197
|
-
- [packages/libs/service.js](file://packages/libs/service.js#L87-L131)
|
|
198
|
-
- [packages/index.js](file://packages/index.js#L148-L239)
|
|
208
|
+
- [packages/libs/service.js:87-131](file://packages/libs/service.js#L87-L131)
|
|
209
|
+
- [packages/index.js:148-239](file://packages/index.js#L148-L239)
|
|
199
210
|
|
|
200
211
|
## 开发依赖管理
|
|
201
212
|
|
|
@@ -227,11 +238,11 @@ end
|
|
|
227
238
|
```
|
|
228
239
|
|
|
229
240
|
**图表来源**
|
|
230
|
-
- [package.json](file://package.json#
|
|
241
|
+
- [package.json:31-43](file://package.json#L31-L43)
|
|
231
242
|
|
|
232
243
|
**章节来源**
|
|
233
|
-
- [package.json](file://package.json#
|
|
234
|
-
- [vite.config.js](file://vite.config.js#L63-L70)
|
|
244
|
+
- [package.json:31-43](file://package.json#L31-L43)
|
|
245
|
+
- [vite.config.js:63-70](file://vite.config.js#L63-L70)
|
|
235
246
|
|
|
236
247
|
## 依赖版本控制策略
|
|
237
248
|
|
|
@@ -254,7 +265,7 @@ H --> K[用于关键依赖]
|
|
|
254
265
|
```
|
|
255
266
|
|
|
256
267
|
**图表来源**
|
|
257
|
-
- [package.json](file://package.json#L21-L47)
|
|
268
|
+
- [package.json:21-47](file://package.json#L21-L47)
|
|
258
269
|
|
|
259
270
|
### 锁定文件管理
|
|
260
271
|
|
|
@@ -265,8 +276,8 @@ H --> K[用于关键依赖]
|
|
|
265
276
|
- **自动安装**: pnpm 自动处理 peer dependencies
|
|
266
277
|
|
|
267
278
|
**章节来源**
|
|
268
|
-
- [pnpm-lock.yaml](file://pnpm-lock.yaml#L1-L69)
|
|
269
|
-
- [package.json](file://package.json#L44-L47)
|
|
279
|
+
- [pnpm-lock.yaml:1-69](file://pnpm-lock.yaml#L1-L69)
|
|
280
|
+
- [package.json:44-47](file://package.json#L44-L47)
|
|
270
281
|
|
|
271
282
|
## 模块解析策略
|
|
272
283
|
|
|
@@ -292,8 +303,8 @@ end
|
|
|
292
303
|
```
|
|
293
304
|
|
|
294
305
|
**图表来源**
|
|
295
|
-
- [package.json](file://package.json#L7-L12)
|
|
296
|
-
- [package.json](file://package.json#L5-L11)
|
|
306
|
+
- [package.json:7-12](file://package.json#L7-L12)
|
|
307
|
+
- [package.json:5-11](file://package.json#L5-L11)
|
|
297
308
|
|
|
298
309
|
### 兼容性保证
|
|
299
310
|
|
|
@@ -304,8 +315,8 @@ end
|
|
|
304
315
|
3. **API 兼容**: 统一的国际化 API 接口
|
|
305
316
|
|
|
306
317
|
**章节来源**
|
|
307
|
-
- [package.json](file://package.json#L5-L12)
|
|
308
|
-
- [packages/index.js](file://packages/index.js#L7-L41)
|
|
318
|
+
- [package.json:5-12](file://package.json#L5-L12)
|
|
319
|
+
- [packages/index.js:7-41](file://packages/index.js#L7-L41)
|
|
309
320
|
|
|
310
321
|
## 性能优化考虑
|
|
311
322
|
|
|
@@ -324,7 +335,7 @@ I --> J[避免全局污染]
|
|
|
324
335
|
```
|
|
325
336
|
|
|
326
337
|
**图表来源**
|
|
327
|
-
- [packages/index.js](file://packages/index.js#L1-L50)
|
|
338
|
+
- [packages/index.js:1-50](file://packages/index.js#L1-L50)
|
|
328
339
|
|
|
329
340
|
### 运行时优化
|
|
330
341
|
|
|
@@ -333,8 +344,8 @@ I --> J[避免全局污染]
|
|
|
333
344
|
3. **增量更新**: 支持翻译数据的增量同步
|
|
334
345
|
|
|
335
346
|
**章节来源**
|
|
336
|
-
- [packages/libs/service.js](file://packages/libs/service.js#L95-L131)
|
|
337
|
-
- [packages/index.js](file://packages/index.js#L329-L372)
|
|
347
|
+
- [packages/libs/service.js:95-131](file://packages/libs/service.js#L95-L131)
|
|
348
|
+
- [packages/index.js:329-372](file://packages/index.js#L329-L372)
|
|
338
349
|
|
|
339
350
|
## 故障排除指南
|
|
340
351
|
|
|
@@ -347,6 +358,14 @@ I --> J[避免全局污染]
|
|
|
347
358
|
| 构建失败 | 编译错误或打包问题 | 检查 Vite 配置和外部化设置 |
|
|
348
359
|
| 性能问题 | 加载缓慢或内存占用高 | 分析 bundle 大小和优化导入 |
|
|
349
360
|
|
|
361
|
+
### 依赖配置问题
|
|
362
|
+
|
|
363
|
+
**更新** Vue i18n 依赖配置问题已修复:
|
|
364
|
+
- 问题:vue-i18n 曾被错误地放置在 devDependencies 中
|
|
365
|
+
- 影响:下游项目无法正确解析 vue-i18n 依赖
|
|
366
|
+
- 解决:已将其移动到 dependencies 中
|
|
367
|
+
- 验证:现在可以在生产环境中正确使用
|
|
368
|
+
|
|
350
369
|
### 调试工具
|
|
351
370
|
|
|
352
371
|
1. **依赖图分析**: 使用 `npm ls` 或 `pnpm ls` 查看依赖关系
|
|
@@ -354,7 +373,7 @@ I --> J[避免全局污染]
|
|
|
354
373
|
3. **运行时监控**: 检查浏览器开发者工具中的网络请求
|
|
355
374
|
|
|
356
375
|
**章节来源**
|
|
357
|
-
- [README.md](file://README.md#L21-L51)
|
|
376
|
+
- [README.md:21-51](file://README.md#L21-L51)
|
|
358
377
|
|
|
359
378
|
## 总结
|
|
360
379
|
|
|
@@ -374,4 +393,6 @@ gc_i18n 的依赖管理策略体现了现代前端工程的最佳实践:
|
|
|
374
393
|
3. **构建优化**: 外部化和代码分割策略
|
|
375
394
|
4. **测试覆盖**: 完善的单元测试和集成测试
|
|
376
395
|
|
|
396
|
+
**更新** 通过修复 Vue i18n 依赖配置问题,确保了库在各种环境下的可靠性和兼容性,解决了下游项目可能遇到的依赖解析问题。
|
|
397
|
+
|
|
377
398
|
该依赖管理策略为大型国际化项目的可维护性和扩展性提供了坚实的基础,是现代前端库开发的优秀范例。
|