chore: monorepo scaffold and shared config

Workspace setup with pnpm, Vite+, and shared TypeScript config.
Includes @vue-tui/utils and AGENTS.md project conventions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Yunfei He
2026-05-24 18:13:22 +08:00
commit def33588e3
17 changed files with 3168 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# AI agent worktrees
.claude/worktrees/
# Superpowers
docs/superpowers/
tmp/
+1
View File
@@ -0,0 +1 @@
vp staged
+3
View File
@@ -0,0 +1,3 @@
{
"recommendations": ["VoidZero.vite-plus-extension-pack"]
}
+23
View File
@@ -0,0 +1,23 @@
# Common Pitfalls & Best Practices
- AGENTS.md is the source of truth. CLAUDE.md is a symlink to it.
- Always use Vue's `shallowRef` over `ref` by default. Using `ref` requires a solid justification and a code comment explaining why deep reactivity is needed.
- Always use `defineComponent()` to define components. Never use bare `{ setup() {} }` objects — they lack component scope, so `inject`, `watch`, and `onScopeDispose` won't work correctly.
- After completing any task, run `vp run ready` (or `vpr ready`) to verify: lint, type-check, test all packages, and build.
<!--VITE PLUS START-->
# Using Vite+, the Unified Toolchain for the Web
This project is using Vite+, a unified toolchain built on top of Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt, and Vite Task. Vite+ wraps runtime management, package management, and frontend tooling in a single global CLI called `vp`. Vite+ is distinct from Vite, and it invokes Vite through `vp dev` and `vp build`. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.
Docs are local at `node_modules/vite-plus/docs` or online at https://viteplus.dev/guide/.
## Review Checklist
- [ ] Run `vp install` after pulling remote changes and before getting started.
- [ ] Run `vp check` and `vp test` to format, lint, type check and test changes.
- [ ] Check if there are `vite.config.ts` tasks or `package.json` scripts necessary for validation, run via `vp run <script>`.
- [ ] If setup, runtime, or package-manager behavior looks wrong, run `vp env doctor` and include its output when asking for help.
<!--VITE PLUS END-->
Symlink
+1
View File
@@ -0,0 +1 @@
AGENTS.md
+18
View File
@@ -0,0 +1,18 @@
{
"name": "vue-tui",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"ready": "vp check && vp run -r test && vp run -r build",
"dev": "vp run website#dev",
"prepare": "vp config"
},
"devDependencies": {
"vite-plus": "catalog:"
},
"engines": {
"node": ">=22.12.0"
},
"packageManager": "pnpm@11.1.2"
}
+4
View File
@@ -0,0 +1,4 @@
node_modules
dist
*.log
.DS_Store
+23
View File
@@ -0,0 +1,23 @@
# vite-plus-starter
A starter for creating a Vite Plus project.
## Development
- Install dependencies:
```bash
vp install
```
- Run the unit tests:
```bash
vp test
```
- Build the library:
```bash
vp pack
```
+40
View File
@@ -0,0 +1,40 @@
{
"name": "utils",
"version": "0.0.0",
"description": "A starter for creating a TypeScript package.",
"homepage": "https://github.com/author/library#readme",
"bugs": {
"url": "https://github.com/author/library/issues"
},
"license": "MIT",
"author": "Author Name <author.name@mail.com>",
"repository": {
"type": "git",
"url": "git+https://github.com/author/library.git"
},
"files": [
"dist"
],
"type": "module",
"exports": {
".": "./dist/index.mjs",
"./package.json": "./package.json"
},
"publishConfig": {
"access": "public"
},
"scripts": {
"build": "vp pack",
"dev": "vp pack --watch",
"test": "vp test",
"check": "vp check",
"prepublishOnly": "vp run build"
},
"devDependencies": {
"@types/node": "^25.6.2",
"@typescript/native-preview": "7.0.0-dev.20260509.2",
"bumpp": "^11.1.0",
"typescript": "^6.0.3",
"vite-plus": "^0.1.20"
}
}
+3
View File
@@ -0,0 +1,3 @@
export function fn() {
return "Hello, tsdown!";
}
+6
View File
@@ -0,0 +1,6 @@
import { expect, test } from "vite-plus/test";
import { fn } from "../src/index.ts";
test("fn", () => {
expect(fn()).toBe("Hello, tsdown!");
});
+20
View File
@@ -0,0 +1,20 @@
{
"compilerOptions": {
"target": "esnext",
"lib": ["es2023"],
"moduleDetection": "force",
"module": "nodenext",
"moduleResolution": "nodenext",
"resolveJsonModule": true,
"types": ["node"],
"strict": true,
"noUnusedLocals": true,
"declaration": true,
"noEmit": true,
"allowImportingTsExtensions": true,
"esModuleInterop": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"skipLibCheck": true
}
}
+17
View File
@@ -0,0 +1,17 @@
import { defineConfig } from "vite-plus";
export default defineConfig({
pack: {
dts: {
tsgo: true,
},
exports: true,
},
lint: {
options: {
typeAware: true,
typeCheck: true,
},
},
fmt: {},
});
+2932
View File
File diff suppressed because it is too large Load Diff
+25
View File
@@ -0,0 +1,25 @@
packages:
- apps/*
- packages/*
- tools/*
- examples/*
catalogMode: prefer
catalog:
"@types/node": ^24
typescript: ^5
vite: npm:@voidzero-dev/vite-plus-core@latest
vitest: npm:@voidzero-dev/vite-plus-test@latest
vite-plus: latest
"@vitejs/plugin-vue-jsx": ^5.1.5
overrides:
vite: "catalog:"
vitest: "catalog:"
peerDependencyRules:
allowAny:
- vite
- vitest
allowedVersions:
vite: "*"
vitest: "*"
+9
View File
@@ -0,0 +1,9 @@
{
"compilerOptions": {
"noEmit": true,
"module": "nodenext",
"moduleResolution": "nodenext",
"allowImportingTsExtensions": true,
"esModuleInterop": true
}
}
+12
View File
@@ -0,0 +1,12 @@
import { defineConfig } from "vite-plus";
export default defineConfig({
staged: {
"*": "vp check --fix",
},
fmt: {},
lint: { options: { typeAware: true, typeCheck: true } },
run: {
cache: true,
},
});