@quicktvui/web-cli 1.0.8 → 2.1.1

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 CHANGED
@@ -1,29 +1,54 @@
1
- # @quicktvui/web-cli
1
+ # @quicktvui/web-cli v2
2
2
 
3
- QuickTVUI Web 开发服务器 CLI 工具,零配置启动 Web 渲染开发环境。
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-dev
45
+ # 在项目目录下运行
46
+ npx qt-web-cli
22
47
 
23
48
  # 或在 package.json 中添加脚本
24
49
  {
25
50
  "scripts": {
26
- "web:dev": "qt-web-dev"
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-dev [options]
59
+ 用法: qt-web-cli [options]
35
60
 
36
61
  选项:
37
- -p, --port <port> 开发服务器端口 (默认: 39001)
38
- -c, --config <path> 自定义 webpack 配置文件路径
39
- -o, --open 自动打开浏览器
40
- -h, --help 显示帮助信息
41
-
42
- 示例:
43
- qt-web-dev
44
- qt-web-dev --port 8080
45
- qt-web-dev --config ./my.webpack.js
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
- 如果 `package.json` 中配置了 `webMain`,直接使用该入口:
75
+ #### 1. 自动构建 + 启动(默认)
55
76
 
56
- ```json
57
- {
58
- "main": "./src/main.ts",
59
- "webMain": "./src/main-web.js"
60
- }
77
+ ```bash
78
+ qt-web-cli
79
+ # 自动调用 npm run dev,构建完成后启动服务器
61
80
  ```
62
81
 
63
- ### 2. 本地 src/web 目录
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
- 如果以上都不满足,CLI 会:
72
- - 使用 `@quicktvui/web-renderer` 包作为渲染器
73
- - 自动包装 `main` 指定的入口文件
74
-
75
- ## 项目结构示例
84
+ ```bash
85
+ qt-web-cli --no-auto-build
86
+ # 不调用 npm run dev,仅启动静态服务器
87
+ # 需要手动在其他终端运行 npm run dev
88
+ ```
76
89
 
77
- ### 方式一:独立 webMain 入口(推荐)
90
+ #### 3. 指定其他构建脚本
78
91
 
79
- ```
80
- project/
81
- ├── package.json # 配置 webMain
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
- ```json
93
- // package.json
94
- {
95
- "main": "./src/main.ts",
96
- "webMain": "./src/main-web.js"
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
- project/
104
- ├── package.json # 无需配置 webMain
105
- ├── src/
106
- ├── main.ts # 主入口
107
- │ └── web/ # Web 渲染器(CLI 自动检测)
108
- │ ├── index.js
109
- │ └── core/
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
- ### 方式三:使用 web-renderer 包
118
+ ## 构建产物结构
114
119
 
115
120
  ```
116
- project/
117
- ├── package.json
118
- ├── src/
119
- └── main.ts # 主入口
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
- ```json
151
- {
152
- "compilerOptions": {
153
- "baseUrl": ".",
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
- ### OpenSSL 兼容
148
+ ## 迁移指南 (v1 → v2)
163
149
 
164
- 自动检测 OpenSSL 版本,对于 OpenSSL 3.x 自动添加 `--openssl-legacy-provider` 参数。
150
+ ### v1 迁移
165
151
 
166
- ## 自定义 Webpack 配置
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
- 如需自定义配置,可通过 `--config` 指定:
158
+ ### 典型的 webpack dev 配置
169
159
 
170
- ```bash
171
- qt-web-dev --config ./webpack.config.js
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
- MIT
173
+ Apache-2.0
File without changes