newlifex/newlife.cube/cube-init
Claude Code and agent skill by newlifex/newlife.cube
- community
Checking that the SKILL.md file is still in the repository.
初始化一个新的前端项目,使用 @newlifex/cube-vue 框架。 当用户说"初始化项目"、"创建新项目"、"搭建前端项目"、"使用 @newlifex/cube-vue 初始化"时使用此技能。 自动配置布局、状态管理(Pinia)、路由、API请求库、多语言支持、容器化部署等核心功能,开箱即用。
Install
npx vskill@latest install newlifex/newlife.cube/cube-initSKILL.md
@newlifex/cube-vue 项目初始化
什么时候用
当用户需要创建一个新的前端项目,或在现有项目中引入 @newlifex/cube-vue 框架时使用。
架构说明
@newlifex/cube-vue 包发布名为 @newlifex/cube-vue,代码中 import 使用 @newlifex/cube-vue/... 路径(通过 pnpm 别名机制)。
支持两种项目结构:
| 场景 | 说明 | 参考 | |
|---|---|---|---|
| Monorepo 工作空间 | 项目放在 @newlifex/cube-vue 所在仓库内,通过 workspace 协议引用 | ||
| 独立应用 | @newlifex/cube-vue 作为 npm 包安装 | 后续 npm 发布后 |
本技能以 monorepo 场景为主,独立应用场景仅调整依赖声明方式(npm install @newlifex/cube-vue + 别名)。
初始化步骤
1. 检查环境
- Node.js >= 24
- pnpm >= 9
- 根目录需配置
pnpm-workspace.yaml(monorepo 场景)
2. 注册 workspace(monorepo 场景)
在根目录 pnpm-workspace.yaml 中添加新项目:
3. 创建项目入口文件
在项目 src/ 目录下创建 main.ts:
4. 创建 index.html
5. 创建配置文件
在项目根目录创建 configs/ 目录:
configs/config.ts - 通用配置:
configs/config.development.ts - 开发环境配置:
configs/config.test.ts - 测试环境配置:
configs/config.production.ts - 生产环境配置(支持容器部署替换):
configs/microAppConfig.json - 微应用配置(空数组即可):
6. 创建环境变量文件
`.env` - 通用环境变量:
`.env.development` - 开发环境变量:
`.env.test` - 测试环境变量(需 vite --mode test):
`.env.production` - 生产环境变量:
7. 配置 Vite
vite.config.ts(monorepo 场景——不需要 alias):
为什么不需要 `@newlifex/cube-vue` 别名? 因为 pnpm workspace 协议(workspace:*)+ 别名("@newlifex/cube-vue": "workspace:@newlifex/cube-vue@*")会自动创建node_modules/@newlifex/cube-vue的 symlink,Node.js 模块解析就能直接找到。
8. 配置 TypeScript
⚠️ 重要:必须添加@newlifex/cube-vue/core/client类型声明,否则initApp()等 API 会报类型错误。
tsconfig.json:
说明:"types": ["@newlifex/cube-vue/core/client"]会自动加载框架的类型声明文件,确保initApp()、useUserStore()等 API 的类型提示正常工作。
tsconfig.node.json:
9. 配置 package.json
Monorepo 场景 — 依赖声明:
使用 一条 workspace 依赖:
条目解释:
| 依赖 | 作用 | |
|---|---|---|
"@newlifex/cube-vue": "workspace:*" | 正式包名,monorepo 内通过 workspace 协议引用本地库 | |
| vue/pinia/element-plus/vue-router | 不必须声明(pnpm auto-install-peers 自动装),但建议显式锁定版本 |
为什么不需要`@newlifex/cube-vue: "link:../../@newlifex/cube-vue"`?因为 monorepo workspace 模式下,workspace:*等价且语义更清晰,link:路径已被淘汰。
10. package.json 完整示例
11. 创建 Docker 配置
在项目根目录创建 docker/ 目录:
docker/Dockerfile:
docker/enterpoint.sh:
配置优先级(从低到高)
BUILD_ 占位符机制
用于生产环境容器部署时动态注入配置:
- 在
configs/config.production.ts中使用baseUrl: '${BUILD_REQUEST_BASE_URL}' - Vite 构建时会自动将
BUILD_XXX占位符注入到dist/index.html - 容器启动时,
docker/enterpoint.sh通过 sed 替换占位符
生成的 html 内联脚本格式:
框架提供的能力
| 功能 | 说明 | 如何使用 | |
|---|---|---|---|
| 布局系统 | RootLayout 统一接管菜单/登录/标签页,布局组件仅提供结构外壳 | 通过 registerLayout(option, setAsCurrent) 登记(见 cube-layout 技能),禁止旧版 provide(LayoutKey) | |
| 状态管理 | UserStore 用户状态,MenuStore 菜单状态 | useUserStore(), useMenuStore() | |
| 路由系统 | 动态路由,由后端菜单自动生成 | 无需手写 vue-router 配置,页面文件按目录约定放置即可 | |
| API请求 | 带 Token、401处理、错误提示的 Axios 封装 | import request from '@newlifex/cube-vue/core/utils/request' | |
| 国际化 | Vue I18n,支持动态切换 | intl.get('key').d('默认值') | |
| 页面覆盖 | Section 机制,可覆盖框架组件 | 在视图目录下创建 PascalCase(首字母大写)Vue 文件,见下方「页面视图目录约定」 | |
| BUILD_ 配置注入 | 生产构建时自动注入到 html | 在 config.production.ts 使用 ${BUILD_XXX} |
验证初始化成功
- 开发环境验证:
pnpm dev启动- 访问
http://localhost:3000 - 检查登录页面正常渲染
- 生产构建验证:
pnpm build成功- 检查
dist/index.html是否包含 BUILD_ 占位符脚本
红线 / 禁止自行发挥
以下为历史踩坑固化的强制约束,落实时严格照办,禁止凭记忆或"想当然"自行发挥:
- 框架源码路径有层级,定位时别少写一层:本仓库中框架源码位于
Cube/NewLife.Cube/NewLife.Cube.Vue/web(注意是两层:NewLife.Cube目录内还有一层NewLife.Cube.Vue)。不同仓库层级可能不同,关键是先确认框架源码真实目录再引用——任何指向框架源码的路径、别名、@newlifex/cube-vue兜底 alias 都要与实际目录对齐,少写一层会导致文件找不到(MISSING)。 - `package.json` 不要重复声明 `@newlifex/cube-vue`:monorepo 场景只用
workspace:*一条依赖(见步骤 9/10),禁止再写第二处link:或重复键——重复键会让 pnpm 解析失败或产生不可预期的幽灵依赖。 - dev 脚本统一用 `cross-env`:
"dev": "cross-env NODE_ENV=development vite",不要裸写vite或直接NODE_ENV=development vite(跨平台兼容)。 - 视图目录必须含 `apps/` 层级(独立宿主):若
vite.config.ts在项目根目录(非apps/<name>/),页面必须放进apps/<app-name>/src/views/...,否则 Vite 插件按apps/*/src/views扫描,扫不到src/views/下的页面。详见「页面视图目录约定」。 - 不要创建被框架接管的孤儿文件:
initApp()内部已挂载框架core/App.vue,禁止在项目里再写一份src/App.vue(那是孤儿文件,不会生效且造成困惑)。src/main.ts只需initApp()+registerLayout(),不要手写createApp().mount()或new Router()。 - Docker 章节按需执行:仅在需要容器部署时才创建
docker/,不部署则跳过,不要无脑生成(用户明确暂不启用 docker)。
多语言配置(可选)
默认中文,如需多语言在 src/i18n/ 下配置:
src/i18n/index.ts- I18n 实例src/i18n/locales/- 语言文件目录
页面视图目录约定(重要)
框架通过 Vite 插件在构建期自动扫描视图目录、生成路由与 Section 覆盖。视图目录位置取决于项目结构:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingNewLife.Cube.Vue/skills/cube-init/SKILL.md
Popularity
- Repository stars
- 629
- Repository forks
- 167
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/newlifex/newlife.cube/cube-init)