@quicktvui/web-cli 1.0.8 → 2.1.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 +101 -113
- package/bin/qt-web-cli-watch.js +0 -0
- package/bin/qt-web-cli.js +401 -100
- package/lib/BundleWatcher.js +192 -0
- package/lib/DevBuildManager.js +295 -0
- package/lib/DevServer.js +586 -0
- package/lib/HotReloader.js +142 -0
- package/lib/index.js +52 -122
- package/package.json +42 -19
- package/templates/dev-renderer.html +357 -0
package/README.md
CHANGED
|
@@ -1,29 +1,54 @@
|
|
|
1
|
-
# @quicktvui/web-cli
|
|
1
|
+
# @quicktvui/web-cli v2
|
|
2
2
|
|
|
3
|
-
QuickTVUI Web 开发服务器 CLI
|
|
3
|
+
QuickTVUI Web 开发服务器 CLI 工具,v2 采用委托构建 + Bundle 加载模式。
|
|
4
|
+
|
|
5
|
+
## v2 架构变化
|
|
6
|
+
|
|
7
|
+
| 项 | v1 | v2 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| 构建方式 | CLI 自带 webpack 构建 | 委托项目 `dev` 脚本构建 |
|
|
10
|
+
| 入口检测 | 扫描 src/main*.ts | 读取 package.json scripts.dev |
|
|
11
|
+
| 产物位置 | dist/web/ | dist/dev/ |
|
|
12
|
+
| 服务器 | webpack-dev-server | 轻量静态服务器 |
|
|
13
|
+
| 热更新 | webpack HMR | SSE + 页面刷新 |
|
|
14
|
+
| peerDeps | webpack, vue-loader 等 | **无**(大幅简化) |
|
|
4
15
|
|
|
5
16
|
## 安装
|
|
6
17
|
|
|
7
18
|
```bash
|
|
8
|
-
npm install @quicktvui/web-cli --save-dev
|
|
19
|
+
npm install @quicktvui/web-cli@2 --save-dev
|
|
9
20
|
# 或
|
|
10
|
-
yarn add @quicktvui/web-cli --dev
|
|
21
|
+
yarn add @quicktvui/web-cli@2 --dev
|
|
11
22
|
# 或
|
|
12
|
-
pnpm add @quicktvui/web-cli -D
|
|
23
|
+
pnpm add @quicktvui/web-cli@2 -D
|
|
13
24
|
```
|
|
14
25
|
|
|
26
|
+
## 前置要求
|
|
27
|
+
|
|
28
|
+
项目需要在 `package.json` 中配置 `dev` 脚本,使用 `qt-dev` 构建到 `dist/dev/` 目录:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"scripts": {
|
|
33
|
+
"dev": "qt-dev android -c ./scripts/quicktvui-webpack.dev.ts"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`dev` 脚本的 webpack 配置需要输出 `index.bundle` 到 `dist/dev/` 目录。
|
|
39
|
+
|
|
15
40
|
## 使用
|
|
16
41
|
|
|
17
42
|
### 基本用法
|
|
18
43
|
|
|
19
44
|
```bash
|
|
20
|
-
#
|
|
21
|
-
npx qt-web-
|
|
45
|
+
# 在项目目录下运行
|
|
46
|
+
npx qt-web-cli
|
|
22
47
|
|
|
23
48
|
# 或在 package.json 中添加脚本
|
|
24
49
|
{
|
|
25
50
|
"scripts": {
|
|
26
|
-
"web:dev": "qt-web-
|
|
51
|
+
"web:dev": "qt-web-cli"
|
|
27
52
|
}
|
|
28
53
|
}
|
|
29
54
|
```
|
|
@@ -31,102 +56,72 @@ npx qt-web-dev
|
|
|
31
56
|
### 命令行选项
|
|
32
57
|
|
|
33
58
|
```
|
|
34
|
-
用法: qt-web-
|
|
59
|
+
用法: qt-web-cli [options]
|
|
35
60
|
|
|
36
61
|
选项:
|
|
37
|
-
-p, --port <port>
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
62
|
+
-p, --port <port> 开发服务器端口 (默认: 39001)
|
|
63
|
+
-o, --open 自动打开浏览器
|
|
64
|
+
-h, --help 显示帮助信息
|
|
65
|
+
-v, --version 显示 CLI 版本
|
|
66
|
+
--info 显示 CLI 和 web-renderer 版本
|
|
67
|
+
--dev-script <name> 指定要运行的 npm script (默认: dev)
|
|
68
|
+
--dist-dir <path> 指定构建产物目录 (默认: dist/dev)
|
|
69
|
+
--no-auto-build 跳过自动调用 dev 脚本,仅启动服务器
|
|
70
|
+
--v1 使用 v1 模式 (webpack 自构建,已废弃)
|
|
46
71
|
```
|
|
47
72
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
CLI 会自动检测项目入口,优先级如下:
|
|
51
|
-
|
|
52
|
-
### 1. webMain 配置(推荐)
|
|
73
|
+
### 使用场景
|
|
53
74
|
|
|
54
|
-
|
|
75
|
+
#### 1. 自动构建 + 启动(默认)
|
|
55
76
|
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"webMain": "./src/main-web.js"
|
|
60
|
-
}
|
|
77
|
+
```bash
|
|
78
|
+
qt-web-cli
|
|
79
|
+
# 自动调用 npm run dev,构建完成后启动服务器
|
|
61
80
|
```
|
|
62
81
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
如果没有 `webMain` 但存在 `src/web/index.js`,CLI 会:
|
|
66
|
-
- 使用 `src/web` 目录作为 Web 渲染器
|
|
67
|
-
- 自动包装 `main` 指定的入口文件
|
|
68
|
-
|
|
69
|
-
### 3. @quicktvui/web-renderer 包
|
|
82
|
+
#### 2. 仅启动服务器(已有构建产物)
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
```bash
|
|
85
|
+
qt-web-cli --no-auto-build
|
|
86
|
+
# 不调用 npm run dev,仅启动静态服务器
|
|
87
|
+
# 需要手动在其他终端运行 npm run dev
|
|
88
|
+
```
|
|
76
89
|
|
|
77
|
-
|
|
90
|
+
#### 3. 指定其他构建脚本
|
|
78
91
|
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
├── src/
|
|
83
|
-
│ ├── main.ts # 原生入口
|
|
84
|
-
│ ├── main-web.js # Web 入口(自定义初始化逻辑)
|
|
85
|
-
│ └── web/ # Web 渲染器
|
|
86
|
-
│ ├── index.js
|
|
87
|
-
│ ├── core/
|
|
88
|
-
│ └── components/
|
|
89
|
-
└── ...
|
|
92
|
+
```bash
|
|
93
|
+
qt-web-cli --dev-script build
|
|
94
|
+
# 使用 npm run build 替代 npm run dev
|
|
90
95
|
```
|
|
91
96
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
97
|
+
#### 4. 使用 v1 模式
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
qt-web-cli --v1
|
|
101
|
+
# 回退到 v1 模式(webpack 自构建),已废弃
|
|
98
102
|
```
|
|
99
103
|
|
|
100
|
-
|
|
104
|
+
## 工作流程
|
|
101
105
|
|
|
102
106
|
```
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
1. 检测项目的 dev 脚本
|
|
108
|
+
2. 检查 dist/dev/index.bundle 是否已存在
|
|
109
|
+
→ 存在:跳过构建,直接启动服务器
|
|
110
|
+
→ 不存在:调用 npm run dev 启动构建
|
|
111
|
+
3. 启动轻量静态服务器
|
|
112
|
+
→ 托管 dist/dev/ 目录
|
|
113
|
+
→ 提供 web-runtime HTML 页面
|
|
114
|
+
4. 浏览器打开 → 通过 web-runtime 加载 dist/dev/index.bundle
|
|
115
|
+
5. 监听 dist/dev/ 文件变化 → SSE 通知浏览器刷新
|
|
111
116
|
```
|
|
112
117
|
|
|
113
|
-
|
|
118
|
+
## 构建产物结构
|
|
114
119
|
|
|
115
120
|
```
|
|
116
|
-
|
|
117
|
-
├──
|
|
118
|
-
├──
|
|
119
|
-
|
|
120
|
-
└── ...
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
```json
|
|
124
|
-
// package.json
|
|
125
|
-
{
|
|
126
|
-
"dependencies": {
|
|
127
|
-
"@quicktvui/web-renderer": "^1.0.0"
|
|
128
|
-
}
|
|
129
|
-
}
|
|
121
|
+
dist/dev/
|
|
122
|
+
├── index.bundle # 主入口
|
|
123
|
+
├── src_views_xxx_vue.index.bundle # 按路由分包
|
|
124
|
+
└── assets/ # 静态资源
|
|
130
125
|
```
|
|
131
126
|
|
|
132
127
|
## 内置功能
|
|
@@ -143,43 +138,36 @@ CLI 内置代理功能,解决开发环境跨域问题:
|
|
|
143
138
|
-> https://api.example.com/users
|
|
144
139
|
```
|
|
145
140
|
|
|
146
|
-
###
|
|
147
|
-
|
|
148
|
-
自动读取 `jsconfig.json` 或 `tsconfig.json` 中的路径配置:
|
|
141
|
+
### SSE 热更新
|
|
149
142
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
"paths": {
|
|
155
|
-
"@/*": ["src/*"],
|
|
156
|
-
"@components/*": ["src/components/*"]
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
```
|
|
143
|
+
v2 使用 SSE (Server-Sent Events) 实现热更新:
|
|
144
|
+
- 监听 `dist/dev/` 目录变化
|
|
145
|
+
- 文件变化时通知浏览器自动刷新
|
|
146
|
+
- 状态栏显示构建状态
|
|
161
147
|
|
|
162
|
-
|
|
148
|
+
## 迁移指南 (v1 → v2)
|
|
163
149
|
|
|
164
|
-
|
|
150
|
+
### 从 v1 迁移
|
|
165
151
|
|
|
166
|
-
|
|
152
|
+
1. 确保项目有 `dev` 脚本配置
|
|
153
|
+
2. 确保 `dev` 脚本输出到 `dist/dev/` 目录
|
|
154
|
+
3. 确保 webpack 输出文件名为 `index.bundle`
|
|
155
|
+
4. 升级 `@quicktvui/web-cli` 到 v2
|
|
156
|
+
5. 移除不再需要的 webpack peerDependencies
|
|
167
157
|
|
|
168
|
-
|
|
158
|
+
### 典型的 webpack dev 配置
|
|
169
159
|
|
|
170
|
-
```
|
|
171
|
-
|
|
160
|
+
```js
|
|
161
|
+
// scripts/quicktvui-webpack.dev.ts
|
|
162
|
+
module.exports = {
|
|
163
|
+
output: {
|
|
164
|
+
filename: 'index.bundle',
|
|
165
|
+
path: path.resolve(__dirname, '../dist/dev/'),
|
|
166
|
+
},
|
|
167
|
+
// ... 其他配置
|
|
168
|
+
}
|
|
172
169
|
```
|
|
173
170
|
|
|
174
|
-
自定义配置会完全替换内置配置。
|
|
175
|
-
|
|
176
|
-
## 技术栈
|
|
177
|
-
|
|
178
|
-
- Vue 3 + TypeScript
|
|
179
|
-
- Webpack 5
|
|
180
|
-
- vue-loader
|
|
181
|
-
- @extscreen/es3-vue-css-loader
|
|
182
|
-
|
|
183
171
|
## License
|
|
184
172
|
|
|
185
|
-
|
|
173
|
+
Apache-2.0
|
package/bin/qt-web-cli-watch.js
CHANGED
|
File without changes
|