@aweray/hsk-cli 0.2.2

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 ADDED
@@ -0,0 +1,356 @@
1
+ # HSK CLI
2
+
3
+ > HSK CLI — 零配置公网预览工具。一键内网穿透、文件托管,支持 Windows / macOS / Linux 多平台。
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@aweray/hsk-cli)](https://www.npmjs.com/package/@aweray/hsk-cli)
6
+ [![Node.js](https://img.shields.io/node/v/@aweray/hsk-cli)](https://nodejs.org/)
7
+ [![License](https://img.shields.io/npm/l/@aweray/hsk-cli)](LICENSE)
8
+
9
+ ## Features
10
+
11
+ - **多平台自动适配** — 自动检测操作系统和架构,下载对应原生客户端二进制
12
+ - **内网穿透** — 一键将本地服务暴露到公网,支持前台/后台两种保活模式
13
+ - **文件托管** — 上传本地文件或构建产物,获取公网下载链接
14
+ - **构建部署** — `deploy` 命令一键完成 build → pack → upload
15
+ - **AI 友好** — 支持 `--json` 结构化输出,便于 AI Agent 解析和自动化
16
+ - **版本同步** — npm 包版本与原生二进制版本一致,自动匹配升级
17
+
18
+ ## Supported Platforms
19
+
20
+ | Platform | Architectures |
21
+ |----------|---------------|
22
+ | macOS | Intel (amd64), Apple Silicon (arm64) |
23
+ | Linux | amd64 |
24
+ | Windows | amd64 |
25
+
26
+ ## Installation
27
+
28
+ **Requirements:** Node.js >= 14
29
+
30
+ ```bash
31
+ # 全局安装
32
+ npm install -g @aweray/hsk-cli
33
+
34
+ # 或 npx 免安装运行
35
+ npx @aweray/hsk-cli <command>
36
+ ```
37
+
38
+ 首次运行时,CLI 会自动检测当前平台并下载对应的原生客户端二进制到 `~/.hsk/bin/`。
39
+
40
+ ## Quick Start
41
+
42
+ ### 1. 预下载客户端
43
+
44
+ ```bash
45
+ hsk-cli download
46
+ ```
47
+
48
+ ### 2. 启动内网穿透(前台保活)
49
+
50
+ ```bash
51
+ hsk-cli tunnel --ip 127.0.0.1 --port 9000
52
+ ```
53
+
54
+ 按 `Ctrl+C` 停止隧道。
55
+
56
+ ### 3. 启动内网穿透(后台保活)
57
+
58
+ ```bash
59
+ hsk-cli tunnel --ip 127.0.0.1 --port 9000 --detach
60
+ ```
61
+
62
+ 后台模式启动后 CLI 立即退出,隧道持续运行。使用 `tunnel list` / `tunnel stop` 管理。
63
+
64
+ ### 4. 文件托管
65
+
66
+ ```bash
67
+ hsk-cli host ./document.pdf
68
+ ```
69
+
70
+ ### 5. 构建并部署项目
71
+
72
+ ```bash
73
+ hsk-cli deploy
74
+ ```
75
+
76
+ 自动执行 `npm run build` → 打包 `dist/` → 上传到文件托管。
77
+
78
+ ---
79
+
80
+ ## Global Options
81
+
82
+ | Option | Description |
83
+ |--------|-------------|
84
+ | `--format <format>` | 输出格式: `json`, `pretty`, `table`, `ndjson`, `csv` (默认: `pretty`) |
85
+ | `--dry-run` | 预览模式,不执行实际操作 |
86
+ | `--json` | `--format json` 的快捷方式 |
87
+
88
+ ---
89
+
90
+ ## Command Reference
91
+
92
+ ### Tunnel Management
93
+
94
+ #### `tunnel` — 启动内网穿透
95
+
96
+ ```bash
97
+ hsk-cli tunnel --ip <IP> --port <PORT> [options]
98
+ ```
99
+
100
+ | Option | Required | Description |
101
+ |--------|----------|-------------|
102
+ | `--ip <ip>` | 是 | 本地服务 IP 地址 |
103
+ | `--port <port>` | 是 | 本地服务端口(1-65535) |
104
+ | `--arch <arch>` | 否 | 强制指定客户端架构: `win32`, `win64`, `macos-x64`, `macos-arm64`, `linux-x64`, `linux-arm64` |
105
+ | `--force-download` | 否 | 强制重新下载客户端二进制 |
106
+ | `--detach` | 否 | 后台模式,CLI 立即退出,隧道持续运行 |
107
+ | `--json` | 否 | 以 JSON 格式输出 |
108
+
109
+ #### `tunnel list` — 查看后台隧道
110
+
111
+ ```bash
112
+ hsk-cli tunnel list
113
+ ```
114
+
115
+ 显示所有后台运行的隧道,包括 PID、本地目标、启动时间和日志路径。自动清理已停止隧道的残留记录。
116
+
117
+ #### `tunnel stop` — 停止隧道
118
+
119
+ ```bash
120
+ # 停止指定 PID
121
+ hsk-cli tunnel stop --pid <PID>
122
+
123
+ # 停止全部
124
+ hsk-cli tunnel stop --all
125
+ ```
126
+
127
+ ### File Hosting
128
+
129
+ #### `host` — 上传文件
130
+
131
+ ```bash
132
+ hsk-cli host <filePath> [options]
133
+ ```
134
+
135
+ | Option | Required | Description |
136
+ |--------|----------|-------------|
137
+ | `<filePath>` | 是 | 本地文件路径 |
138
+ | `--resource-id <id>` | 否 | 资源 ID(传入则更新已有资源) |
139
+ | `--open` | 否 | 上传完成后自动打开浏览器进行认领 |
140
+ | `--json` | 否 | 以 JSON 格式输出 |
141
+
142
+ > **注意**: `host` 仅支持单文件。上传目录(如 build/dist)请使用 `deploy` 命令。
143
+
144
+ ### Deploy
145
+
146
+ #### `deploy` — 构建并部署项目
147
+
148
+ ```bash
149
+ hsk-cli deploy [options]
150
+ ```
151
+
152
+ 一键执行:**构建** → **打包** → **上传**。
153
+
154
+ | Option | Description |
155
+ |--------|-------------|
156
+ | `--build-cmd <cmd>` | 构建命令(默认: `npm run build`) |
157
+ | `--build-dir <dir>` | 构建输出目录(默认: `dist`) |
158
+ | `--pack-output <file>` | 打包文件名(默认: `dist.zip`) |
159
+ | `--no-build` | 跳过构建,直接打包上传现有目录 |
160
+ | `--no-clean` | 上传后保留打包文件 |
161
+ | `--resource-id <id>` | 更新已有资源 |
162
+ | `--open` | 上传完成后自动打开浏览器 |
163
+ | `--json` | 以 JSON 格式输出 |
164
+
165
+ **配置优先级**: 命令行参数 > 项目 `package.json` 的 `hsk.deploy` > 全局 `~/.hsk/config.json` > 默认配置
166
+
167
+ **项目配置示例(`package.json`)**:
168
+
169
+ ```json
170
+ {
171
+ "scripts": {
172
+ "build": "vite build"
173
+ },
174
+ "hsk": {
175
+ "deploy": {
176
+ "buildCmd": "npm run build",
177
+ "buildDir": "dist",
178
+ "packOutput": "dist.zip",
179
+ "cleanAfterUpload": true
180
+ }
181
+ }
182
+ }
183
+ ```
184
+
185
+ ### System
186
+
187
+ #### `download` — 预下载客户端
188
+
189
+ ```bash
190
+ hsk-cli download [--arch <arch>]
191
+ ```
192
+
193
+ #### `update` — 更新客户端
194
+
195
+ ```bash
196
+ hsk-cli update [--arch <arch>] [--force]
197
+ ```
198
+
199
+ #### `platform` — 显示平台信息
200
+
201
+ ```bash
202
+ hsk-cli platform
203
+ ```
204
+
205
+ ---
206
+
207
+ ## Examples
208
+
209
+ ### 启动内网穿透并管理
210
+
211
+ ```bash
212
+ # 前台模式(按 Ctrl+C 停止)
213
+ hsk-cli tunnel --ip 127.0.0.1 --port 9000
214
+
215
+ # 后台模式
216
+ hsk-cli tunnel --ip 127.0.0.1 --port 9000 --detach
217
+
218
+ # 查看后台隧道
219
+ hsk-cli tunnel list
220
+
221
+ # 停止全部后台隧道
222
+ hsk-cli tunnel stop --all
223
+ ```
224
+
225
+ ### 上传文件并自动认领
226
+
227
+ ```bash
228
+ hsk-cli host ./report.pdf --open
229
+ ```
230
+
231
+ ### 跨平台预下载
232
+
233
+ ```bash
234
+ # 在 macOS 上预下载 Linux 版本
235
+ hsk-cli download --arch linux-x64
236
+ ```
237
+
238
+ ### JSON 输出(AI 友好)
239
+
240
+ ```bash
241
+ hsk-cli tunnel --ip 127.0.0.1 --port 9000 --json
242
+ hsk-cli host ./document.pdf --json
243
+ ```
244
+
245
+ ### 构建并部署
246
+
247
+ ```bash
248
+ # 使用项目配置
249
+ hsk-cli deploy
250
+
251
+ # 命令行覆盖配置
252
+ hsk-cli deploy --build-cmd "yarn build" --build-dir "build"
253
+
254
+ # 跳过构建,直接上传
255
+ hsk-cli deploy --no-build
256
+
257
+ # 更新已有资源
258
+ hsk-cli deploy --resource-id abc123 --open
259
+ ```
260
+
261
+ ---
262
+
263
+ ## Configuration
264
+
265
+ ### 项目配置(`package.json`)
266
+
267
+ ```json
268
+ {
269
+ "hsk": {
270
+ "deploy": {
271
+ "buildCmd": "npm run build",
272
+ "buildDir": "dist",
273
+ "packOutput": "dist.zip",
274
+ "cleanAfterUpload": true
275
+ }
276
+ }
277
+ }
278
+ ```
279
+
280
+ ### 全局配置(`~/.hsk/config.json`)
281
+
282
+ ```json
283
+ {
284
+ "deploy": {
285
+ "buildCmd": "npm run build",
286
+ "buildDir": "dist",
287
+ "packOutput": "dist.zip",
288
+ "cleanAfterUpload": true
289
+ }
290
+ }
291
+ ```
292
+
293
+ ### 环境变量
294
+
295
+ | Variable | Description |
296
+ |----------|-------------|
297
+ | `HSK_DOWNLOAD_URL` | 客户端二进制下载基地址 |
298
+ | `HSK_FILE_HOSTING_API` | Ticket API 完整 URL |
299
+ | `HSK_FILE_HOSTING_TICKET_HOST` | Ticket 服务主机 |
300
+ | `HSK_FILE_HOSTING_UPLOAD_HOST` | 上传服务主机 |
301
+ | `HSK_FILE_HOSTING_UPLOAD_PORT` | 上传服务端口 |
302
+ | `HSK_FILE_HOSTING_UPLOAD_SCHEME` | 上传服务协议 |
303
+
304
+ ---
305
+
306
+ ## Logs
307
+
308
+ - **macOS / Linux**: `~/.hsk/logs/`
309
+ - **Windows**: `%USERPROFILE%\.hsk\logs\`
310
+
311
+ ---
312
+
313
+ ## How It Works
314
+
315
+ ```
316
+ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
317
+ │ hsk-cli npm │ ──▶ │ versions.json │ ──▶ │ download binary │
318
+ │ package (node)│ │ (version map) │ │ ~/.hsk/bin/ │
319
+ └─────────────────┘ └──────────────┘ └─────────────────┘
320
+
321
+
322
+ ┌─────────────────┐
323
+ │ native binary │ ← 实际执行内网穿透/文件托管
324
+ │ (cross-platform)│
325
+ └─────────────────┘
326
+ ```
327
+
328
+ - **npm 包**(启动器):提供命令行接口、平台检测、自动下载、版本管理
329
+ - **versions.json**:定义 npm 包版本与原生二进制版本的映射关系
330
+ - **原生二进制**:按平台编译(Go/Rust/C++),实际执行网络穿透和文件传输
331
+
332
+ ---
333
+
334
+ ## Notes
335
+
336
+ - During installation, the package automatically downloads the appropriate native binary for your operating system and architecture.
337
+ - The CLI caches downloaded binaries in `~/.hsk/bin/`. No manual setup is required after installation.
338
+ - The npm package version and native binary version are kept in sync. When you update the npm package, the corresponding binary will be downloaded automatically.
339
+ - **前台模式(默认)**: CLI 启动客户端二进制作为子进程,实时输出日志,捕获到公网地址后持续运行。按 `Ctrl+C` 发送 `SIGTERM` 优雅停止。
340
+ - **后台模式(`--detach`)**: CLI 启动子进程后使用 `detached: true` 解除父子绑定,立即退出。子进程在后台独立运行,日志写入 `~/.hsk/logs/`,PID 记录保存到 `~/.hsk/pids/`.
341
+ - **Deploy**: `hsk-cli deploy` 执行 `build` → `pack` → `upload` 三步。打包使用系统原生 `zip`(macOS/Linux)或 PowerShell `Compress-Archive`(Windows),无需额外依赖.
342
+ - Enable `--dry-run` to preview operations without executing them.
343
+
344
+ ---
345
+
346
+ ## Changelog
347
+
348
+ See [CHANGELOG.md](CHANGELOG.md) for release history.
349
+
350
+ ## Contributing
351
+
352
+ We welcome contributions! Please see [CONTRIBUTING.md](c) for guidelines.
353
+
354
+ ## License
355
+
356
+ Copyright (c) 2026 Oray Inc. All rights reserved.