CLI 命令
VextJS 提供了 vext 命令行工具,覆盖项目创建、开发、构建、部署的完整生命周期。
安装
vext CLI 随 vextjs 包一起安装,无需额外安装:
安装后可以通过以下方式调用:
命令概览
vext create — 创建项目
交互式创建新的 VextJS 项目,自动生成项目骨架和配置文件。
用法
选项
示例
生成的目录结构
创建完成后:
访问 http://localhost:3000,你应该能看到框架的 JSON 响应。
如需在配置冻结前拉取远程配置(例如 Nacos / 启动期数据库配置),可额外创建 src/config/bootstrap.ts 并通过 defineBootstrapConfig() 注册 provider。该文件不是脚手架强制生成项,但已是框架正式约定路径。
vext dev — 开发模式
以开发模式启动项目,支持文件监听和智能热重载。
用法
选项
端口冲突策略
error:直接失败(默认)prompt:在 TTY 环境下询问父进程如何处理kill:尝试终止占用端口的进程next:自动选择下一个可用端口
生命周期日志分层
默认使用 concise 模式,只保留启动摘要、ready、cold restart / hot reload 结果;如需排障细节,可开启:
示例
热重载策略
vext dev 提供三层热重载策略,自动选择最优方式:
详见 热重载 章节。
package.json 脚本
vext build — 构建项目
将 TypeScript 源码编译为 JavaScript,生成生产可用的 dist/ 目录。
用法
选项
示例
构建行为
- 使用 esbuild 进行极速编译(TypeScript → JavaScript)
- 输出目录:
dist/ - 保持源码目录结构
- 生成
.js和.d.ts文件
package.json 脚本
vext dev:直接从src/加载.ts文件,通过 esbuild 即时编译,支持热重载vext build:将src/编译到dist/,生产模式从dist/加载 :::
vext start — 生产模式启动
以生产模式启动项目。从 dist/ 目录加载编译后的代码,需要先执行 vext build。
用法
选项
示例
默认命令
当不传任何命令时,vext 默认执行 start:
Cluster 模式
如果配置中启用了 cluster,vext start 会自动进入 Cluster 模式,由 Master 进程管理多个 Worker 进程:
或通过环境变量启用:
预加载(Preload)自动注入
vext start 和 vext dev 会自动扫描已安装依赖包中声明了 vext.preload 的包,
在子进程启动前通过 --import 注入预加载脚本。例如 vextjs-opentelemetry 利用此机制
在应用代码加载前自动初始化 OpenTelemetry SDK。
详见 预加载 (Preload)。
启动期配置 Provider
如果项目存在 src/config/bootstrap.ts,vext start / vext dev 会在配置 validate / freeze 前执行其中声明的 bootstrap config provider,并将 provider 返回的 patch 合并到最终配置中。优先级为:default < env < local < provider < CLI。
Cluster 模式下,Master 会把本轮 provider patch 传递给 Worker 复用,避免同一启动周期内 Master / Worker 看到不同远程配置。
package.json 脚本
推荐在跨平台项目中使用 cross-env 设置环境变量:
Vext 本身不内置 cross-env;它只是推荐的脚本层兼容工具,用于在 Windows、macOS、Linux 下统一设置 NODE_ENV。
:::tip 环境文件选择
当前 vext start 没有 --config <file> 这样的参数。环境配置文件的选择机制是:
- 读取运行时
NODE_ENV - 匹配
src/config/{NODE_ENV}.ts(build 后对应dist/config/{NODE_ENV}.js)
如果你需要 sg-sit.ts、us-uat.ts 这类自定义环境,只需在启动时设置对应的 NODE_ENV。
vext stop — 停止服务
停止正在运行的 Cluster 模式服务。通过读取 PID 文件发送停止信号。
用法
选项
示例
vext stop 仅在 Cluster 模式下可用。单进程模式下直接使用 Ctrl+C 或发送 SIGTERM 信号即可优雅关闭。
vext reload — 滚动重启
触发 Cluster 模式的零停机滚动重启(Rolling Restart)。逐个重启 Worker 进程,确保服务始终可用。
用法
选项
示例
滚动重启流程
代码更新后执行 vext build + vext reload,无需停机即可完成版本更新。适合需要高可用性的生产环境。
vext status — 查看运行状态
查看 Cluster 模式下的服务运行状态,包括 Master 进程和各 Worker 进程的信息。
用法
选项
示例
输出示例
全局选项
所有命令都支持以下全局选项:
推荐的 package.json 脚本
常见问题
vext start 报错 "dist/ not found"
需要先执行 vext build 编译 TypeScript 代码。vext start 从 dist/ 加载编译后的 JavaScript 文件。
开发时应该用 vext dev 还是 vext start?
日常开发使用 vext dev,它直接加载 src/ 下的 TypeScript 文件,支持热重载,无需手动编译。vext start 用于生产环境。
如何指定 Node.js 版本?
VextJS 要求 Node.js >= 18.0.0。推荐在项目根目录创建 .node-version 或 .nvmrc 文件指定版本:
vext stop / vext reload / vext status 不工作?
这三个命令仅在 Cluster 模式下可用。确保配置中启用了 cluster.enabled: true 或使用了 VEXT_CLUSTER=1 环境变量,且服务通过 vext start 启动。
下一步
- 了解 热重载 的三层策略细节
- 学习 Cluster 多进程 的完整配置
- 查看 配置 中端口、日志等选项
- 探索 项目结构 的约定