当前位置: 首页 > news >正文

AI驱动的Vue3应用开发平台深入探究(十九):CLI与工具链之Create VTJ CLI 参考

Create VTJ CLI 参考

Create VTJ CLI 是 VTJ 项目的官方脚手架工具,提供针对多种平台和用例的预配置项目模板。该 CLI 通过直观的交互界面或命令行参数处理环境设置、依赖配置和样板代码生成,从而简化项目初始化流程。

安装

Create VTJ CLI 可以通过npm create命令模式直接调用,无需显式安装。该工具以包名create-vtj发布到 npm,当前版本为 0.12.19。

npm create vtj@latest # 使用自定义镜像源(推荐在中国地区使用以加快下载速度) npm create vtj@latest --registry=https://registry.npmmirror.com

该 CLI 会通过解析用户代理自动检测你的包管理器(npm、yarn 或 pnpm),并为创建的项目生成相应的安装说明。

可用模板

Create VTJ 提供了七种针对不同开发场景的预配置模板:

模板名称显示名称用途主要依赖
appWeb应用具有完整 VTJ 设计器集成的 PC 端 Web 应用@vtj/web, @vtj/pro, vue-router, pinia, vue-i18n
h5H5应用移动端优化的 Web 应用@vtj/renderer, @vtj/h5, vue-router, pinia, vue-i18n
uniapp移动端应用跨平台移动应用(微信小程序、H5、App)@dcloudio/uni-app, @vtj/uni-app, vue-router
material物料开发项目用于 VTJ 设计器的自定义组件库开发@vtj/core, @vtj/web, element-plus
plugin低代码区块插件用于低代码引擎的可复用区块/插件@vtj/core, @vtj/ui, @vtj/icons
extension设计器扩展开发项目设计器面板扩展和自定义组件@vtj/core, @vtj/pro, @vueuse/core
library通用类库独立的工具或组件库unbuild, vitest

CLI 用法

交互模式

不带参数运行 CLI 会启动交互式提示词序列:

npm create vtj@latest

交互流程包含三个提示词:

  1. 模板选择:从可用模板中选择(通过颜色编码以便快速识别)
  2. 包名:为你的项目指定 npm 包名(根据 npm 命名规范进行验证)
  3. 覆盖确认:如果目标目录存在且不为空,确认是否清空其内容

非交互模式

为了自动化和 CI/CD 流水线,可以通过直接指定模板来跳过提示词:

# 创建 Web 应用 npm create vtj@latest -- -t app # 创建 H5 移动端应用 npm create vtj@latest -- -t h5 # 创建 uni-app 跨平台项目 npm create vtj@latest -- -t uniapp # 创建物料开发项目 npm create vtj@latest -- -t material

-t--template标志可以互换使用。其余的提示词(包名和覆盖确认)仍会出现,允许进行半自动化工作流程。

命令行选项

选项别名描述必填默认值
--template-t按名称预选模板提示词用户选择
registry-用于 create 命令的 npm 镜像源npm 官方镜像源

CLI 工作流程

Create VTJ CLI 遵循系统化的初始化流程:

架构

该 CLI 实现遵循模块化架构,具有清晰的关注点分离:

模块职责

  • index.js:Shebang 包装器,用于导入并执行来自dist/index.mjs的构建模块
  • src/index.ts:主要协调器,处理参数解析、验证和工作流程协调
  • src/options.ts:使用prompts库定义模板和交互式提示词配置
  • src/generator.ts:项目生成逻辑,包括模板复制、package.json 定制和文件部署
  • src/utils.ts:用于验证、格式化和包管理器检测的工具函数

项目生成流程

生成器对选定的模板执行多项转换:

  1. 模板复制:将所有文件从选定的模板目录递归复制到目标位置
  2. 包配置:读取模板的package.json,使用用户提供的包名更新name字段,并执行字符串替换以替换{{name}}占位符
  3. 文件部署:将_gitignore_npmrc从模板根目录分别作为.gitignore.npmrc复制到新项目中

💡 包名验证遵循 npm 命名约定,要求小写字母、数字、连字符,以及可选的作用域名称格式(例如@scope/package-name)。无效名称将在交互式提示词期间触发验证错误。

生成后步骤

成功创建项目后,CLI 会根据检测到的包管理器显示特定于平台的后续步骤:

完成。现在运行: cd vtj-project npm install npm run dev

对于不同的包管理器,命令会相应调整:

  • npmnpm installnpm run dev
  • yarnyarnyarn dev
  • pnpmpnpm installpnpm run dev

模板特定功能

Web 应用 (app)

app模板包含环境配置文件(env.jsonenv.local.jsonenv.sit.jsonenv.uat.json)和用于开发的代理配置。它提供了针对多种环境(SIT、UAT、PRE、PROD)的构建目标,并启用了 TypeScript 类型检查。

关键脚本:

  • dev:本地开发,环境类型设置为 local
  • build:sit/uat/pre/prod:特定环境的生产构建
  • clean:使用自定义清理脚本清理构建产物

H5 应用 (h5)

H5 模板包含具有平台特定设置的vtj配置字段:

"vtj": { "platform": "h5", "noMask": true }

此配置启用了 H5 特定的渲染行为,并在某些操作期间禁用模态覆盖层。

UniApp 模板 (uniapp)

uni-app 模板提供了广泛的多平台构建脚本,支持:

  • App 平台:Android、iOS
  • 小程序:微信、支付宝、百度、京东、快手、飞书、QQ、头条
  • Web:H5 和 SSR 变体
  • 快应用:多种供应商实现

该模板包含每个目标平台的全面 uni-app 依赖和类型定义。

物料开发 (material)

物料模板生成双输出包:

  • 库构建:用于组件使用的 UMD 和 ESM 格式
  • 物料构建:用于 VTJ 设计器集成的专用格式

exports字段定义了多个入口点,实现了灵活的导入策略。

故障排除

模板名称验证

如果通过-t指定了无效的模板名称,CLI 将显示错误消息并退出,不会创建任何目录:

Error: invalid template name "invalid-name"

有效的模板名称为:apph5pluginuniappmaterialextensionlibrary

包名验证

包名必须遵守 npm 命名规则:

  • 必须以字母或数字开头
  • 可以包含字母、数字、连字符和下划线
  • 可以包含作用域前缀(例如@organization/name
  • 最大长度为 214 个字符
  • 不能包含空格或特殊字符

无效名称将触发:项目包名不合法,请更换!

目录覆盖保护

默认情况下,CLI 会阻止覆盖非空目录。用户必须在提示词时明确确认覆盖操作。取消提示词将保留现有目录内容。

后续步骤

创建 VTJ 项目后,建议探索以下相关文档主题:

  • 创建 Web 应用:app 模板项目的详细指南
  • 创建 H5 移动应用:移动端特定的开发模式
  • 架构概述:了解 VTJ 系统架构
  • 创建自定义物料组件:物料模板项目的指南
  • 构建配置和 Vite 集成:为生成的项目自定义构建流程

参考资料

  • 官方文档:https://vtj.pro/
  • 在线平台:https://app.vtj.pro/
  • 开源仓库:https://gitee.com/newgateway/vtj
http://www.jsqmd.com/news/569210/

相关文章:

  • 新手友好!Ubuntu 18上BUUCTF PWN题‘RIP’的保姆级栈溢出通关攻略(附Python脚本)
  • MiniCPM-V-2_6 Ubuntu 20.04一键部署教程:从安装到运行
  • PyTorch 2.8镜像法律科技:庭审音视频→AI摘要+关键帧提取+证据链可视化
  • 告别信息混乱:Trilium中文版让知识管理像整理衣柜一样简单
  • Docker-Wechat:在容器中畅享跨平台微信体验
  • Isaac Gym摄像头数据获取全攻略:从CPU到GPU,教你实时显示RGB与深度图
  • Qwen3-ASR-0.6B在在线教育场景的应用:快速将讲课音频转文字
  • HUNYUAN-MT惊艳翻译效果:专业领域长文档翻译案例集
  • Qwen3-TTS快速体验:无需配置,打开网页直接生成AI语音
  • 算法学习助手:LFM2.5-1.2B-Thinking-GGUF详解经典排序与搜索算法
  • 给Halcon HImage加个“眼睛”:在VS2022调试器中实现图像可视化与右键保存功能
  • Graphormer在计算毒理学中的应用:预测hERG通道抑制活性的完整建模流程
  • 高口碑+强实力!优质建筑机器人公司盘点
  • 【逻辑心法】别用 switch-case 堆砌屎山了!撕碎液压控制的标志位迷宫,用 C++ 构筑层级状态机 (HSM) 的绝对秩序
  • openclaw如何更好创建agent
  • Docker镜像拉取超时?阿里云镜像加速保姆级配置指南(附中科院镜像对比)
  • umimax创建方式
  • 粉紫系超人气月兔铃仙
  • 【控制心法】别把教科书 PID 塞进钢铁里!撕碎理想数学的伪装,用 C++ 打造抗饱和与微分先行的工业级伺服引擎
  • C++ 智能指针陷阱与调试技巧
  • 2026实测避坑:AI消痕技术哪家强?物理级降AIGC痕迹,炼字工坊这波降熵算法真香!
  • DDColor修复黑白老照片:ComfyUI工作流详解,参数调整技巧分享
  • 2026年3月全球抗老精华推荐:五款口碑产品评测对比知名顶尖 - 品牌推荐
  • 大卫小东(Sheldon)
  • 老项目wangeditor粘贴字数限制踩坑记:从源码定位到两种修复方案(含代码)
  • 你的Mesh网络真的“无损”吗?深入1905.1链路度量(Link Metrics)协议与网络优化实践
  • Qwen2.5-VL图文助手体验:RTX 4090极速推理,支持对话历史和一键清空
  • 从AI孙燕姿到自定义声库:so-vits-svc 4.1声音克隆全流程避坑手册
  • 欧拉系统镜像优化:解决下载速度慢的实用指南
  • Docker镜像加速实战:国内开发者必备的镜像源配置指南