项目脚手架生成器
一个 VS Code 扩展,通过侧边栏快速生成项目基础架构。目前内置两类模板:
- Chrome Manifest V3 扩展:React、TypeScript、Vite、Ant Design。
- 通用管理后台:React、Vite、TypeScript、Ant Design、
base-element-react,包含请求、路由、布局、权限、Hooks 和公共组件层。
扩展不再限制 IP 或网络环境。
安装
可以从 Visual Studio Marketplace 安装,扩展 ID 为 gancaoYy.extendsion-scaffold;也可以使用本仓库生成的 VSIX 离线安装。
使用方式
- 点击 VS Code 活动栏中的“脚手架生成器”。
- 选择“Chrome 扩展插件”或“通用管理后台”。
- 填写项目名称并选择保存位置。
- 点击“立即生成”。
- 生成完成后可选择在新窗口打开。
生成过程只复制文件,不会自动安装依赖、执行命令或初始化 Git。目标目录如果已经存在,扩展会停止并提示更换名称或位置,不会覆盖现有文件。
模板结构
templates/
├── chrome-extension/ # Chrome Manifest V3 项目
└── admin-web/ # 通用企业管理后台
扩展模块结构
src/
├── extension.ts # 扩展生命周期与命令注册
├── SidebarProvider.ts # VS Code Webview adapter,只处理宿主侧副作用
├── projectGenerator.ts # 项目校验、原子复制与占位符替换
├── scaffolds/catalog.ts # 内置脚手架的只读目录与查询接口
└── sidebar/
├── messages.ts # Webview 消息协议及运行时校验
└── webviewHtml.ts # 无 VS Code 依赖的纯 HTML 渲染
media/
├── sidebar.css # 侧边栏样式
└── sidebar.js # 浏览器事件与消息发送
模块通过小接口协作:浏览器消息必须先通过 messages.ts 校验,SidebarProvider 才调用 VS Code 能力;视图渲染是纯函数,项目复制逻辑只通过 projectGenerator.ts 暴露。非平凡函数的注释说明职责、输入约束和副作用,避免用注释复述代码本身。
通用管理后台
后台模板保留了通用平台层:
- SSO 登录、远程菜单和按钮权限接入点。
- Axios 请求、上传、加密和日志能力。
- 后台布局、菜单搜索、路由标签、机构、文件中心和应用面板。
- 公共组件、通用 Hooks、工具函数、基础页面和主题配置。
- development、test、pre、production 多环境占位配置。
- ESLint、Prettier、Stylelint 和 Commitlint 配置。
默认 VITE_APP_AUTH_OPEN=0、VITE_APP_PLATFORM_TOOLS_OPEN=0、VITE_APP_LOG_OPEN=0,生成后可以直接运行本地欢迎页和组件总览。模板不包含 WMS 业务页面、业务 API、components/biz、真实域名、真实应用 ID、密钥、发布脚本或同步脚本。
变量替换与安全策略
生成器会在文本文件中替换:
{{PROJECT_NAME}}:原始项目名称,用作显示名称和文件夹名。
{{PACKAGE_NAME}}:自动转换为小写连字符形式,用作 npm 包名。
项目名称必须是安全的单级目录名,不能包含路径分隔符、系统保留字符或相对路径。生成器先复制到保存位置下的临时目录,成功后再原子重命名;失败时不会留下半成品目标目录。
开发与验证
pnpm install
pnpm run compile
pnpm run test:unit
pnpm run lint
pnpm test
pnpm run package:vsix
pnpm test 会在最低支持版本 VS Code 中验证扩展激活和命令注册。pnpm run package:vsix 会运行预发布编译并生成可安装包;正式发布前必须先提升 package.json 版本号。由于代码仓库是内部地址,打包脚本不会向公开 Marketplace 暴露 repository URL。
在 VS Code 中按 F5 可打开扩展开发宿主窗口进行侧栏交互测试。
添加模板
- 在
templates/<scaffold-id> 下准备独立项目快照。
- 在
src/scaffolds/catalog.ts 中注册名称、说明、路径和默认项目名。
- 扩展
test/projectGenerator.test.cjs,验证模板可以生成且所有占位符被替换。
VSCE 默认拒绝打包 .env*。模板需要生成环境文件时,请在模板快照中使用 __dot__env、__dot__env.development 这类名称;生成器复制项目时会自动还原为 .env、.env.development。
License
MIT