weapp-vite 6.18.7 → 6.19.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.
- package/README.md +28 -0
- package/dist/auto-import-components/resolvers.d.mts +2 -2
- package/dist/auto-import-components/resolvers.mjs +2 -334
- package/dist/auto-routes.mjs +1 -1
- package/dist/cli.mjs +41 -9
- package/dist/{config-DEdY6_Qn.d.mts → config-CKToDk5V.d.mts} +22 -4
- package/dist/config.d.mts +1 -1
- package/dist/{createContext-C3XuGjnq.mjs → createContext-B5rRMSjV.mjs} +864 -330
- package/dist/docs/README.md +28 -0
- package/dist/docs/getting-started.md +13 -0
- package/dist/docs/index.md +7 -3
- package/dist/docs/testing.md +38 -0
- package/dist/docs/uni-app-component-libraries.md +213 -0
- package/dist/docs/weapp-config.md +29 -0
- package/dist/{file-DjQkG6ce.mjs → file-BgstESAr.mjs} +1 -1
- package/dist/file-DDpy9efy.mjs +2 -0
- package/dist/getInstance-DYwC9HEv.mjs +2 -0
- package/dist/{index-Bmclyjw8.d.mts → index-CaXAtb9e.d.mts} +24 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/json.d.mts +1 -1
- package/dist/mcp.d.mts +1 -1
- package/dist/resolvers-w4g7O94W.mjs +684 -0
- package/dist/resolvers.d.mts +2 -0
- package/dist/resolvers.mjs +2 -0
- package/dist/test.d.mts +33 -0
- package/dist/test.mjs +82 -0
- package/dist/types.d.mts +3 -3
- package/package.json +25 -17
- package/dist/file-CWBCL2N8.mjs +0 -2
- package/dist/getInstance-DrwD5CVt.mjs +0 -2
package/dist/docs/README.md
CHANGED
|
@@ -28,7 +28,10 @@
|
|
|
28
28
|
- ⚡️ **Vite 构建**:带来了 `typescript` / `scss` / `less` 等等的原生支持
|
|
29
29
|
- ♻️ **实验性状态保持 HMR**:微信开发者工具中可保留 Page/Component/wevu 状态并替换 JavaScript 方法
|
|
30
30
|
- 🔌 **插件生态**:Vite 插件生态支持,也可以自定义编写插件,方便扩展
|
|
31
|
+
- 🌐 **实验性 Web Runtime**:同一份原生 WXML/WXSS/TS 或 wevu Vue SFC 源码可通过 `-p web` 启动和构建浏览器版本
|
|
32
|
+
- 🧩 **实验性 uni-app 组件库兼容**:通过显式依赖白名单与 `WotUiResolver()` 在微信小程序和 Web 中使用 Wot UI Vue SFC
|
|
31
33
|
- 🧰 **IDE 命令增强**:可直接透传 `weapp-ide-cli` 全量命令(`preview/upload/config/automator` 等)
|
|
34
|
+
- 🧪 **真实产物单测**:`weapp-vite/test` 提供不启动 CLI 的程序化测试构建入口,可配合 `@mpcore/test` 测试页面和组件
|
|
32
35
|
|
|
33
36
|
## 快速开始
|
|
34
37
|
|
|
@@ -48,6 +51,17 @@ export default defineConfig({
|
|
|
48
51
|
|
|
49
52
|
> 说明:CLI 同时支持完整命令 `weapp-vite` 与简写命令 `wv`,两者等价。下面的示例默认使用 `weapp-vite`,你也可以按个人习惯替换成 `wv`。
|
|
50
53
|
|
|
54
|
+
### Web 项目
|
|
55
|
+
|
|
56
|
+
项目根目录提供引用 `/@weapp-vite/web/entry` 的 `index.html` 后,可以直接运行同一份小程序源码:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
wv dev -p web --host
|
|
60
|
+
wv build -p web
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`web` 是浏览器 runtime 的规范平台名,`h5` 仅作为向后兼容别名保留;未选择 Web 平台时不改变现有小程序构建。完整配置和兼容边界见 [Web 运行时配置](https://vite.icebreaker.top/config/web) 与 [`@weapp-vite/web`](https://vite.icebreaker.top/packages/web)。
|
|
64
|
+
|
|
51
65
|
### Vue 项目
|
|
52
66
|
|
|
53
67
|
```typescript
|
|
@@ -112,6 +126,7 @@ function handleClick() {
|
|
|
112
126
|
- defineConfig 重载说明:[docs/define-config-overloads.md](./docs/define-config-overloads.md)
|
|
113
127
|
- Vite 插件识别 weapp-vite 宿主:https://vite.icebreaker.top/guide/vite-plugin-host
|
|
114
128
|
- MCP 集成使用指南:[docs/mcp.md](./docs/mcp.md)
|
|
129
|
+
- Wot UI 与 uni-app 组件库:[docs/packaged/uni-app-component-libraries.md](./docs/packaged/uni-app-component-libraries.md)
|
|
115
130
|
|
|
116
131
|
## AI 项目指引
|
|
117
132
|
|
|
@@ -143,6 +158,7 @@ function handleClick() {
|
|
|
143
158
|
- `ai-workflows.md`
|
|
144
159
|
- `project-structure.md`
|
|
145
160
|
- `weapp-config.md`
|
|
161
|
+
- `uni-app-component-libraries.md`
|
|
146
162
|
- `wevu-authoring.md`
|
|
147
163
|
- `vue-sfc.md`
|
|
148
164
|
- `troubleshooting.md`
|
|
@@ -370,6 +386,18 @@ export default defineConfig({
|
|
|
370
386
|
|
|
371
387
|
详细说明见:[docs/mcp.md](./docs/mcp.md)
|
|
372
388
|
|
|
389
|
+
## 小程序页面与组件测试
|
|
390
|
+
|
|
391
|
+
`buildTestArtifact()` 会通过 Vite/Rolldown 把真实编译产物输出到隔离目录,供 mpcore 测试环境消费:
|
|
392
|
+
|
|
393
|
+
```ts
|
|
394
|
+
import { buildTestArtifact } from 'weapp-vite/test'
|
|
395
|
+
|
|
396
|
+
const artifact = await buildTestArtifact({ cwd: process.cwd() })
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
默认输出目录是 `.weapp-vite/test-artifacts/`。完整的 render、查询、交互和 Vitest 接入见 [测试指南](./docs/packaged/testing.md)。
|
|
400
|
+
|
|
373
401
|
## Contribute
|
|
374
402
|
|
|
375
403
|
我们邀请你来贡献和帮助改进 `weapp-vite` 💚💚💚
|
|
@@ -39,6 +39,17 @@ weapp-vite ide logs --open
|
|
|
39
39
|
weapp-vite build
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
+
### Web 预览与构建
|
|
43
|
+
|
|
44
|
+
项目根目录准备引用 `/@weapp-vite/web/entry` 的 `index.html` 后,可以复用原有小程序源码:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
wv dev -p web --host
|
|
48
|
+
wv build -p web
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
推荐将两条命令分别固定为 `dev:web` 和 `build:web` scripts。`web` 是规范平台名,`h5` 仅作为向后兼容别名保留。Web runtime 适合浏览器兼容验证,但不替代微信 DevTools 或真机验收。
|
|
52
|
+
|
|
42
53
|
### 4. 截图验收
|
|
43
54
|
|
|
44
55
|
```bash
|
|
@@ -65,6 +76,8 @@ weapp-vite mcp
|
|
|
65
76
|
weapp-vite dev
|
|
66
77
|
weapp-vite dev --open
|
|
67
78
|
weapp-vite build
|
|
79
|
+
wv dev -p web --host
|
|
80
|
+
wv build -p web
|
|
68
81
|
weapp-vite open
|
|
69
82
|
weapp-vite preview --project ./dist/build/mp-weixin
|
|
70
83
|
weapp-vite ide preview --project ./dist/build/mp-weixin
|
package/dist/docs/index.md
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
2. 涉及 AI / MCP / screenshot / DevTools logs 时读 `ai-workflows.md` 与 `mcp.md`。
|
|
11
11
|
3. 涉及项目目录、`AGENTS.md`、`.weapp-vite` 时读 `project-structure.md`。
|
|
12
12
|
4. 涉及 `vite.config.ts`、`weapp` 配置与 chunk 策略时读 `weapp-config.md`。
|
|
13
|
-
5.
|
|
14
|
-
6. 涉及
|
|
15
|
-
7.
|
|
13
|
+
5. 接入 uni-app Vue 组件库或 Wot UI 时读 `uni-app-component-libraries.md`。
|
|
14
|
+
6. 涉及 wevu 运行时与页面/组件/store 约束时读 `wevu-authoring.md`。
|
|
15
|
+
7. 涉及 Vue SFC 宏、模板约束与编辑器提示时读 `vue-sfc.md`、`volar.md` 与 `define-config-overloads.md`。
|
|
16
|
+
8. 编写页面或组件单测时读 `testing.md`。
|
|
17
|
+
9. 遇到告警、prepare、截图、日志、依赖异常时读 `troubleshooting.md`。
|
|
16
18
|
|
|
17
19
|
## Included Docs
|
|
18
20
|
|
|
@@ -24,7 +26,9 @@
|
|
|
24
26
|
- `ai-workflows.md`: AI 代理在其他仓库里使用 weapp-vite 的推荐工作流。
|
|
25
27
|
- `project-structure.md`: AGENTS.md、.weapp-vite、dist 与源码目录的职责说明。
|
|
26
28
|
- `weapp-config.md`: weapp 配置、autoRoutes、autoImportComponents、routeRules 与 chunk 策略。
|
|
29
|
+
- `uni-app-component-libraries.md`: 实验性的 uni-app 组件库转换、Wot UI 配置、99 组件矩阵与双端边界。
|
|
27
30
|
- `wevu-authoring.md`: wevu 页面、组件、store、router 与事件契约的推荐写法。
|
|
28
31
|
- `vue-sfc.md`: definePageJson、definePageMeta、v-model 与模板兼容约束。
|
|
29
32
|
- `troubleshooting.md`: prepare、截图、日志、wevu 依赖与 dist 同步等常见排障。
|
|
33
|
+
- `testing.md`: 使用 mpcore、Vitest 与 weapp-vite 真实编译产物进行页面和组件测试。
|
|
30
34
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# 小程序页面与组件测试
|
|
2
|
+
|
|
3
|
+
`@mpcore/test` 直接执行小程序编译产物,提供逻辑 WXML 查询、交互、宿主 mock 和诊断。它不会伪造浏览器 `document/window`。
|
|
4
|
+
|
|
5
|
+
## 接入
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { mpcoreTest } from '@mpcore/vitest'
|
|
9
|
+
import { defineConfig } from 'vitest/config'
|
|
10
|
+
|
|
11
|
+
export default defineConfig({
|
|
12
|
+
plugins: [mpcoreTest()],
|
|
13
|
+
})
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
使用 `@mpcore/weapp-vite` 构建并缓存测试产物:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { createWeappViteTestProject } from '@mpcore/weapp-vite'
|
|
20
|
+
|
|
21
|
+
const project = await createWeappViteTestProject({ cwd: process.cwd() })
|
|
22
|
+
const result = await project.renderPage('/pages/index/index?source=test')
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
默认产物目录为 `.weapp-vite/test-artifacts/`。构建调用 `weapp-vite/test` 程序化入口,最终文件仍由 Vite/Rolldown emit;不会启动 CLI 或由测试适配器手写 bundle。
|
|
26
|
+
|
|
27
|
+
## 组件
|
|
28
|
+
|
|
29
|
+
`renderComponent()` 通过内存 overlay 注入测试宿主页,组件和依赖仍来自真实产物。支持 properties、静态 WXML slots 与事件监听。
|
|
30
|
+
|
|
31
|
+
每次测试应拥有独立 project/session,并在结束时 `close()`。`createMpcoreTest()` fixture 和 `createVitestProject()` 会自动注册清理,适用于 `test.concurrent`。
|
|
32
|
+
|
|
33
|
+
## 边界
|
|
34
|
+
|
|
35
|
+
- 不断言 CSS layout 或像素可见性。
|
|
36
|
+
- 未配置或未匹配的宿主 mock 应视为错误。
|
|
37
|
+
- 未捕获异常和 `console.error` 默认失败,warning 可通过 diagnostics 断言。
|
|
38
|
+
- 与微信平台语义相关的新增行为仍需用真实开发者工具校准。
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# uni-app 组件库兼容(实验性)
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> 这是实验性能力,当前兼容基线固定为 `@wot-ui/ui@2.2.0` 与 `uview-plus@3.8.86`。默认完全关闭;只有项目源码和 `weapp.uniApp.include` 明确列出的 npm 包会进入 uni-app 方言转换。
|
|
5
|
+
|
|
6
|
+
## uview-plus
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
pnpm add weapp-vite wevu uview-plus@3.8.86
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import { defineConfig } from 'weapp-vite/config'
|
|
14
|
+
import { UviewPlusResolver } from 'weapp-vite/resolvers'
|
|
15
|
+
|
|
16
|
+
export default defineConfig({
|
|
17
|
+
css: {
|
|
18
|
+
preprocessorOptions: {
|
|
19
|
+
scss: {
|
|
20
|
+
additionalData: '@use "uview-plus/theme.scss" as *;\n',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
weapp: {
|
|
25
|
+
uniApp: {
|
|
26
|
+
include: ['uview-plus'],
|
|
27
|
+
},
|
|
28
|
+
autoImportComponents: {
|
|
29
|
+
resolvers: [UviewPlusResolver()],
|
|
30
|
+
vueComponents: true,
|
|
31
|
+
vueComponentsModule: 'wevu',
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
应用启动时调用 `mount$u()`,再把 `uni.$u` 同步到 `app.config.globalProperties.$u`;全局样式引入 `uview-plus/index.scss`。不要使用会在 Web 调用 `Vue.component` 的默认插件注册流程。
|
|
38
|
+
|
|
39
|
+
仓库兼容矩阵还通过 pnpm patch 修复了 3.8.86 中 `u-slider` 设置 `height` 时引用未定义变量 `val` 的缺陷。复用同一基线时应保留 `patches/uview-plus@3.8.86.patch`;升级 uview-plus 后先确认上游是否已经修复,再决定是否移除补丁。
|
|
40
|
+
|
|
41
|
+
`UviewPlusResolver()` 同时解析 `u-*` 与 `up-*` 标签。静态清单以 3.8.86 npm 发布包中的 137 个顶层 SFC 为准,双前缀共 274 个标签;135 个具名组件各有独立测试页。`u-action-sheet-data` 与 `u-column-notice` 没有组件名,分别由 action-sheet 和 notice-bar 页面覆盖。
|
|
42
|
+
|
|
43
|
+
`supportFilesStrategy` 默认为 `'used'`;需要生成全量组件辅助文件时可传入 `UviewPlusResolver({ supportFilesStrategy: 'full' })`。
|
|
44
|
+
|
|
45
|
+
## Wot UI
|
|
46
|
+
|
|
47
|
+
## 安装
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pnpm add weapp-vite wevu @wot-ui/ui@2.2.0
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 配置
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { defineConfig } from 'weapp-vite/config'
|
|
57
|
+
import { WotUiResolver } from 'weapp-vite/resolvers'
|
|
58
|
+
|
|
59
|
+
export default defineConfig({
|
|
60
|
+
weapp: {
|
|
61
|
+
uniApp: {
|
|
62
|
+
include: ['@wot-ui/ui'],
|
|
63
|
+
},
|
|
64
|
+
autoImportComponents: {
|
|
65
|
+
resolvers: [WotUiResolver()],
|
|
66
|
+
vueComponents: true,
|
|
67
|
+
vueComponentsModule: 'wevu',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`WotUiResolver()` 使用 Wot UI 2.2.0 的真实公开 SFC 清单建立标签映射,并返回 `sourceType: 'wevu-sfc'` 与可解析的源码 ID。不要自行假设所有 `wd-*` 标签都能通过目录名拼接得到入口。
|
|
74
|
+
|
|
75
|
+
`weapp.uniApp` 的行为:
|
|
76
|
+
|
|
77
|
+
- 未配置或设为 `false` 时不扫描依赖,也不改变现有项目行为。
|
|
78
|
+
- 项目源码自动参与 uni-app 条件编译;npm 依赖必须出现在 `include` 白名单中。
|
|
79
|
+
- 微信目标启用 `MP-WEIXIN`,Web 目标启用 `H5`。
|
|
80
|
+
- 支持 script、template、style 中嵌套的 `#ifdef`、`#ifndef`、`#else`、`#endif` 和 `A || B`。
|
|
81
|
+
- 自由 `uni` 引用会在小程序目标静态绑定到 `wx`;Vue 运行时导入会按组件源码需要改写到 `wevu`。
|
|
82
|
+
- 转换错误会包含包名、SFC 路径和区块类型,不会静默输出残缺组件。
|
|
83
|
+
|
|
84
|
+
## 启动与构建
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# 微信小程序
|
|
88
|
+
pnpm dev
|
|
89
|
+
pnpm build
|
|
90
|
+
|
|
91
|
+
# Web
|
|
92
|
+
pnpm dev:web
|
|
93
|
+
pnpm build:web
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
微信产物通过项目根 `project.config.json` 导入微信开发者工具。Web 项目需要按 Web runtime 约定提供引用 `/@weapp-vite/web/entry` 的 `index.html`。
|
|
97
|
+
|
|
98
|
+
## 兼容矩阵
|
|
99
|
+
|
|
100
|
+
矩阵以 `@wot-ui/ui@2.2.0/global.d.ts` 实际公开的 99 个 Vue SFC 为准。每个组件都有独立页面;依赖父容器的组件会在自己的页面内使用最小父组件承载。
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
组件 | 独立页 | Web | 微信小程序 | Headless
|
|
104
|
+
wd-action-sheet | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
105
|
+
wd-avatar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
106
|
+
wd-avatar-group | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
107
|
+
wd-backtop | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
108
|
+
wd-badge | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
109
|
+
wd-button | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
110
|
+
wd-calendar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
111
|
+
wd-calendar-view | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
112
|
+
wd-card | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
113
|
+
wd-cascader | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
114
|
+
wd-cell | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
115
|
+
wd-cell-group | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
116
|
+
wd-checkbox | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
117
|
+
wd-checkbox-group | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
118
|
+
wd-circle | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
119
|
+
wd-col | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
120
|
+
wd-collapse | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
121
|
+
wd-collapse-item | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
122
|
+
wd-config-provider | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
123
|
+
wd-count-down | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
124
|
+
wd-count-to | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
125
|
+
wd-curtain | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
126
|
+
wd-datetime-picker | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
127
|
+
wd-datetime-picker-view | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
128
|
+
wd-dialog | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
129
|
+
wd-divider | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
130
|
+
wd-drop-menu | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
131
|
+
wd-drop-menu-item | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
132
|
+
wd-empty | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
133
|
+
wd-fab | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
134
|
+
wd-floating-panel | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
135
|
+
wd-form | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
136
|
+
wd-form-item | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
137
|
+
wd-gap | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
138
|
+
wd-grid | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
139
|
+
wd-grid-item | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
140
|
+
wd-icon | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
141
|
+
wd-image-preview | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
142
|
+
wd-img | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
143
|
+
wd-img-cropper | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
144
|
+
wd-index-anchor | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
145
|
+
wd-index-bar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
146
|
+
wd-input | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
147
|
+
wd-input-number | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
148
|
+
wd-keyboard | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
149
|
+
wd-loading | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
150
|
+
wd-loadmore | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
151
|
+
wd-navbar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
152
|
+
wd-navbar-capsule | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
153
|
+
wd-notice-bar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
154
|
+
wd-notify | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
155
|
+
wd-overlay | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
156
|
+
wd-pagination | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
157
|
+
wd-password-input | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
158
|
+
wd-picker | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
159
|
+
wd-picker-view | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
160
|
+
wd-popover | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
161
|
+
wd-popup | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
162
|
+
wd-progress | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
163
|
+
wd-radio | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
164
|
+
wd-radio-group | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
165
|
+
wd-rate | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
166
|
+
wd-resize | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
167
|
+
wd-root-portal | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
168
|
+
wd-row | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
169
|
+
wd-search | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
170
|
+
wd-segmented | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
171
|
+
wd-select-picker | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
172
|
+
wd-sidebar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
173
|
+
wd-sidebar-item | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
174
|
+
wd-signature | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
175
|
+
wd-skeleton | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
176
|
+
wd-slide-verify | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
177
|
+
wd-slider | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
178
|
+
wd-sort-button | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
179
|
+
wd-step | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
180
|
+
wd-steps | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
181
|
+
wd-sticky | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
182
|
+
wd-sticky-box | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
183
|
+
wd-swipe-action | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
184
|
+
wd-swiper | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
185
|
+
wd-swiper-nav | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
186
|
+
wd-switch | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
187
|
+
wd-tab | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
188
|
+
wd-tabbar | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
189
|
+
wd-tabbar-item | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
190
|
+
wd-table | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
191
|
+
wd-table-column | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
192
|
+
wd-tabs | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
193
|
+
wd-tag | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
194
|
+
wd-text | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
195
|
+
wd-textarea | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
196
|
+
wd-toast | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
197
|
+
wd-tooltip | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
198
|
+
wd-tour | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
199
|
+
wd-transition | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
200
|
+
wd-upload | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
201
|
+
wd-video-preview | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
202
|
+
wd-watermark | 是 | 行为+移动/桌面视觉 | 行为+视觉 | 行为
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
`wd-swiper-indicator` 和 `wd-tour-step` 没有独立公开 SFC,分别在 `wd-swiper` / `wd-swiper-nav` 与 `wd-tour` 场景中覆盖,不伪造 resolver 入口。
|
|
206
|
+
|
|
207
|
+
## 已知边界
|
|
208
|
+
|
|
209
|
+
- 兼容矩阵承诺默认渲染、代表性 props/slot 和至少一个稳定状态;不承诺每个组件的全部 props、业务组合或宿主权限流程。
|
|
210
|
+
- 当前只承诺微信小程序和 Web;支付宝、抖音等其他 uni-app 条件分支尚未纳入验收。
|
|
211
|
+
- 这是面向当前组件场景的兼容层,不是完整 uni-app 运行时。未被组件触达的 `uni.*` API 不会因此自动具备实现。
|
|
212
|
+
- 上传、视频、图片、裁剪、签名和倒计时示例应使用本地固定资源与测试 mock,避免依赖公网、用户授权或实时时钟。
|
|
213
|
+
- 外部 SFC 的样式、资源和最终产物仍由 Vite/Rolldown transform、emit 和 write 管理;不要通过脚本手写构建产物。
|
|
@@ -48,6 +48,35 @@ export default defineConfig({
|
|
|
48
48
|
|
|
49
49
|
`main` 表示主包,`packages/order` 匹配 `app.json.subPackages[].root`。启用后,产物 `app.json.subPackages` 只保留参与 scope 的分包,`preloadRule`、自动路由和 typed router 也会按同一范围裁剪。发布前建议再跑不带 scope 的完整构建。
|
|
50
50
|
|
|
51
|
+
### 分包异步模块
|
|
52
|
+
|
|
53
|
+
跨分包 JS 使用微信官方 callback 或 Promise API:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
require('../../packages/order/modules/price', onLoaded, onError)
|
|
57
|
+
const moduleExport = await require.async('../../packages/order/modules/price')
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`weapp-vite` 会把 callback 写法规范化为 `void require.async(path).then(onLoaded, onError)`,并确保静态路径目标作为异步 chunk 输出,避免被当成同步 CommonJS 依赖提升到主包。源码路径带 `.ts` 等扩展名时,调用参数会同步改为实际 `.js` 产物路径。路径必须是静态相对字面量,目标 root 也必须存在于最终 `app.json.subPackages`;使用自动路由的自定义 root 时,同时声明 `weapp.subPackages.<root>`。
|
|
61
|
+
|
|
62
|
+
希望保留标准 `import()` 写法时,可以选择微信原生分包模式:
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
export default defineConfig({
|
|
66
|
+
weapp: {
|
|
67
|
+
chunks: {
|
|
68
|
+
dynamicImports: 'native',
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const moduleExport = await import('../../packages/order/modules/price.ts')
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`native` 只转换微信构建中跨入已声明普通分包的静态相对导入,并将路径规范化为 `.js`。动态表达式、裸模块、同包导入、独立分包目标以及非微信构建继续保留 bundler 动态导入。默认的 `preserve` 不做转换;历史 `inline` 已废弃,当前会回退为 `preserve` 并输出一次警告。
|
|
77
|
+
|
|
78
|
+
跨包自定义组件不走这套 JS API。组件继续使用 `usingComponents` 与 `componentPlaceholder`,由微信基础库负责下载后的占位替换。
|
|
79
|
+
|
|
51
80
|
### `autoImportComponents`
|
|
52
81
|
|
|
53
82
|
适合用目录扫描自动注册组件的项目。组件重名时要先解决命名冲突,不要让自动引入规则长期处于歧义状态。
|
|
@@ -84,7 +84,7 @@ function resolveAutoRoutesMacroImportPath() {
|
|
|
84
84
|
}
|
|
85
85
|
async function resolveAutoRoutesInlineSnapshot() {
|
|
86
86
|
try {
|
|
87
|
-
const { getCompilerContext } = await import("./getInstance-
|
|
87
|
+
const { getCompilerContext } = await import("./getInstance-DYwC9HEv.mjs");
|
|
88
88
|
const compilerContext = getCompilerContext();
|
|
89
89
|
const service = compilerContext.autoRoutesService;
|
|
90
90
|
const reference = service?.getReference?.();
|
|
@@ -4,6 +4,11 @@ interface ResolvedValue {
|
|
|
4
4
|
from: string;
|
|
5
5
|
resolvedId?: string;
|
|
6
6
|
sourceType?: 'wevu-sfc' | 'native';
|
|
7
|
+
/**
|
|
8
|
+
* 是否允许 `components.d.ts` 通过 `import()` 直接引用组件源码。
|
|
9
|
+
* 需要编译期方言转换、且源码声明不能被消费端直接检查的外部 SFC 应设为 `false`。
|
|
10
|
+
*/
|
|
11
|
+
typeImport?: boolean;
|
|
7
12
|
}
|
|
8
13
|
type ResolverSupportFilesStrategy = 'used' | 'full';
|
|
9
14
|
interface ExternalMetadataFileCandidates {
|
|
@@ -63,10 +68,28 @@ type CreateResolver = (options?: Options) => Resolver;
|
|
|
63
68
|
//#region src/auto-import-components/resolvers/tdesign.d.ts
|
|
64
69
|
declare const TDesignResolver: CreateResolver;
|
|
65
70
|
//#endregion
|
|
71
|
+
//#region src/auto-import-components/resolvers/uviewPlus.d.ts
|
|
72
|
+
interface UviewPlusResolverOptions {
|
|
73
|
+
supportFilesStrategy?: ResolverSupportFilesStrategy;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 创建 uview-plus 的 Vue SFC 自动导入解析器。
|
|
77
|
+
*/
|
|
78
|
+
declare function UviewPlusResolver(options?: UviewPlusResolverOptions): ResolverObject;
|
|
79
|
+
//#endregion
|
|
66
80
|
//#region src/auto-import-components/resolvers/vant.d.ts
|
|
67
81
|
declare const VantResolver: CreateResolver;
|
|
68
82
|
//#endregion
|
|
69
83
|
//#region src/auto-import-components/resolvers/weui.d.ts
|
|
70
84
|
declare const WeuiResolver: CreateResolver;
|
|
71
85
|
//#endregion
|
|
72
|
-
|
|
86
|
+
//#region src/auto-import-components/resolvers/wotUi.d.ts
|
|
87
|
+
interface WotUiResolverOptions extends Pick<Options, 'supportFilesStrategy'> {
|
|
88
|
+
prefix?: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 创建 Wot UI 的 Vue SFC 自动导入解析器。
|
|
92
|
+
*/
|
|
93
|
+
declare function WotUiResolver(options?: WotUiResolverOptions): ResolverObject;
|
|
94
|
+
//#endregion
|
|
95
|
+
export { UviewPlusResolver as a, CreateResolver as c, ResolvedValue as d, Resolver as f, ResolverSupportFilesStrategy as g, ResolverObject as h, VantResolver as i, ExternalMetadataFileCandidates as l, ResolverMeta as m, WotUiResolverOptions as n, UviewPlusResolverOptions as o, ResolverFn as p, WeuiResolver as r, TDesignResolver as s, WotUiResolver as t, Options as u };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $n as
|
|
1
|
+
import { $n as WeappViteTargetInput, A as Ref, C as LoadConfigOptions, D as MethodDefinitions, E as InlineConfig, F as RolldownPlugin, Gn as isWeappViteHost, Hn as WeappViteHostMeta, I as RolldownPluginOption, Jn as ResolvedWeappViteTarget, Kn as resolveWeappViteHostMeta, L as RolldownWatchOptions, M as RolldownBuild, N as RolldownOptions, O as Plugin, P as RolldownOutput, Qn as WeappViteTargetDescriptor, R as RolldownWatcher, S as CompilerContext, T as ConfigEnv, Un as applyWeappViteHostMeta, Vn as WEAPP_VITE_HOST_NAME, Wn as createWeappViteHostMeta, Xn as WeappVitePlatform, Yn as WEB_PLATFORM_ALIASES, Zn as WeappViteRuntime, _ as definePageJson, a as UserConfigFnNoEnvPlain, ar as resolveWeappViteTarget, at as WeappViteConfig, c as UserConfigFnPromise, d as Component, er as WeappViteTargetKind, f as Page, g as defineComponentJson, h as defineAppJson, i as UserConfigFnNoEnv, ir as isWebPlatform, j as ResolvedConfig, k as PluginOption, l as defineConfig, m as Theme, n as UserConfigExport, nr as getSupportedWeappVitePlatforms, o as UserConfigFnObject, p as Sitemap, qn as ResolveWeappViteTargetOptions, r as UserConfigFn, rr as getSupportedWeappViteTargetDescriptors, s as UserConfigFnObjectPlain, t as UserConfig, tr as WebPlatform, u as App, v as defineSitemapJson, w as ComputedDefinitions, y as defineThemeJson, z as ViteDevServer } from "./config-CKToDk5V.mjs";
|
|
2
2
|
import { a as LayoutHostContext, c as LayoutHostResolver, d as unregisterLayoutHosts, f as waitForLayoutHost, i as LayoutHostBridge, l as registerLayoutHosts, m as createWevuComponent, n as defineProps, o as LayoutHostEntry, p as WevuComponentOptions, r as setPageLayout, s as LayoutHostResolveOptions, t as defineEmits, u as resolveLayoutHost } from "./runtime-Ee2HY6gR.mjs";
|
|
3
3
|
//#region src/createContext.d.ts
|
|
4
4
|
interface CreateCompilerContextOptions extends Partial<LoadConfigOptions> {
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as defineThemeJson, i as defineSitemapJson, n as defineComponentJson, r as definePageJson, t as defineAppJson } from "./json-BL8Dhhk6.mjs";
|
|
2
2
|
import { a as resolveWeappViteHostMeta, i as isWeappViteHost, n as applyWeappViteHostMeta, r as createWeappViteHostMeta, t as WEAPP_VITE_HOST_NAME } from "./pluginHost--CaeyWpA.mjs";
|
|
3
3
|
import { t as defineConfig } from "./config-DRGcCi3h.mjs";
|
|
4
|
-
import { c as getSupportedWeappViteTargetDescriptors, l as isWebPlatform, o as WEB_PLATFORM_ALIASES, s as getSupportedWeappVitePlatforms, t as createCompilerContext, u as resolveWeappViteTarget } from "./createContext-
|
|
4
|
+
import { c as getSupportedWeappViteTargetDescriptors, l as isWebPlatform, o as WEB_PLATFORM_ALIASES, s as getSupportedWeappVitePlatforms, t as createCompilerContext, u as resolveWeappViteTarget } from "./createContext-B5rRMSjV.mjs";
|
|
5
5
|
import { a as resolveLayoutHost, c as createWevuComponent, i as registerLayoutHosts, n as defineProps, o as unregisterLayoutHosts, r as setPageLayout, s as waitForLayoutHost, t as defineEmits } from "./runtime-kc5RVjrC.mjs";
|
|
6
6
|
export { WEAPP_VITE_HOST_NAME, WEB_PLATFORM_ALIASES, applyWeappViteHostMeta, createCompilerContext, createWeappViteHostMeta, createWevuComponent, defineAppJson, defineComponentJson, defineConfig, defineEmits, definePageJson, defineProps, defineSitemapJson, defineThemeJson, getSupportedWeappVitePlatforms, getSupportedWeappViteTargetDescriptors, isWeappViteHost, isWebPlatform, registerLayoutHosts, resolveLayoutHost, resolveWeappViteHostMeta, resolveWeappViteTarget, setPageLayout, unregisterLayoutHosts, waitForLayoutHost };
|
package/dist/json.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as definePageJson, d as Component, f as Page, g as defineComponentJson, h as defineAppJson, m as Theme, p as Sitemap, u as App, v as defineSitemapJson, y as defineThemeJson } from "./config-
|
|
1
|
+
import { _ as definePageJson, d as Component, f as Page, g as defineComponentJson, h as defineAppJson, m as Theme, p as Sitemap, u as App, v as defineSitemapJson, y as defineThemeJson } from "./config-CKToDk5V.mjs";
|
|
2
2
|
export { type App, type Component, type Page, type Sitemap, type Theme, defineAppJson, defineComponentJson, definePageJson, defineSitemapJson, defineThemeJson };
|
package/dist/mcp.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as WeappMcpConfig } from "./config-
|
|
1
|
+
import { Et as WeappMcpConfig } from "./config-CKToDk5V.mjs";
|
|
2
2
|
import { CreateServerOptions, DEFAULT_MCP_ENDPOINT, DEFAULT_MCP_HOST, DEFAULT_MCP_PORT, DEFAULT_RUNTIME_REST_ENDPOINT, McpServerHandle, StartMcpServerOptions, createWeappViteMcpServer } from "@weapp-vite/mcp";
|
|
3
3
|
//#region src/mcp.d.ts
|
|
4
4
|
interface ResolvedWeappMcpConfig {
|