Skip to content

Commit 45d6dbc

Browse files
fengmk2Copilot
andauthored
chore: use vp hooks (#680)
<!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated dev tooling and type packages; removed old pre-commit tooling and updated prepare script to use the new tool. * Added new project-level configuration for the Vite+ tool and a minimal pre-commit hook that invokes Vite+ checks. * Added staged automation to run automatic checks on staged files. * **Documentation** * Added extensive Vite+ development workflow, commands, pitfalls, and checklist (duplicated section included). <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: fengmk2 <156269+fengmk2@users.noreply.github.com>
1 parent eb6fd97 commit 45d6dbc

File tree

8 files changed

+350
-496
lines changed

8 files changed

+350
-496
lines changed

.claude/settings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"mcpServers": {
3+
"vite-plus": {
4+
"command": "npx",
5+
"args": ["vp", "mcp"]
6+
}
7+
}
8+
}

.claude/skills/vite-plus

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../node_modules/vite-plus/skills/vite-plus

.husky/pre-commit

Lines changed: 0 additions & 1 deletion
This file was deleted.

.vite-hooks/pre-commit

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
vp staged

CLAUDE.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,83 @@ Vite+ automatically detects and wraps the underlying package manager such as pnp
136136
- [ ] Run `vite install` after pulling remote changes and before getting started.
137137
- [ ] Run `vite lint`, `vite fmt`, and `vite test` to validate changes.
138138
<!--VITE PLUS END-->
139+
140+
<!--injected-by-vite-plus-v0.1.4-->
141+
<!--VITE PLUS START-->
142+
143+
# Using Vite+, the Unified Toolchain for the Web
144+
145+
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, but it invokes Vite through `vp dev` and `vp build`.
146+
147+
## Vite+ Workflow
148+
149+
`vp` is a global binary that handles the full development lifecycle. Run `vp help` to print a list of commands and `vp <command> --help` for information about a specific command.
150+
151+
### Start
152+
153+
- create - Create a new project from a template
154+
- migrate - Migrate an existing project to Vite+
155+
- config - Configure hooks and agent integration
156+
- staged - Run linters on staged files
157+
- install (`i`) - Install dependencies
158+
- env - Manage Node.js versions
159+
160+
### Develop
161+
162+
- dev - Run the development server
163+
- check - Run format, lint, and TypeScript type checks
164+
- lint - Lint code
165+
- fmt - Format code
166+
- test - Run tests
167+
168+
### Execute
169+
170+
- run - Run monorepo tasks
171+
- exec - Execute a command from local `node_modules/.bin`
172+
- dlx - Execute a package binary without installing it as a dependency
173+
- cache - Manage the task cache
174+
175+
### Build
176+
177+
- build - Build for production
178+
- pack - Build libraries
179+
- preview - Preview production build
180+
181+
### Manage Dependencies
182+
183+
Vite+ automatically detects and wraps the underlying package manager such as pnpm, npm, or Yarn through the `packageManager` field in `package.json` or package manager-specific lockfiles.
184+
185+
- add - Add packages to dependencies
186+
- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies
187+
- update (`up`) - Update packages to latest versions
188+
- dedupe - Deduplicate dependencies
189+
- outdated - Check for outdated packages
190+
- list (`ls`) - List installed packages
191+
- why (`explain`) - Show why a package is installed
192+
- info (`view`, `show`) - View package information from the registry
193+
- link (`ln`) / unlink - Manage local package links
194+
- pm - Forward a command to the package manager
195+
196+
### Maintain
197+
198+
- upgrade - Update `vp` itself to the latest version
199+
200+
These commands map to their corresponding tools. For example, `vp dev --port 3000` runs Vite's dev server and works the same as Vite. `vp test` runs JavaScript tests through the bundled Vitest. The version of all tools can be checked using `vp --version`. This is useful when researching documentation, features, and bugs.
201+
202+
## Common Pitfalls
203+
204+
- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations.
205+
- **Always use Vite commands to run tools:** Don't attempt to run `vp vitest` or `vp oxlint`. They do not exist. Use `vp test` and `vp lint` instead.
206+
- **Running scripts:** Vite+ commands take precedence over `package.json` scripts. If there is a `test` script defined in `scripts` that conflicts with the built-in `vp test` command, run it using `vp run test`.
207+
- **Do not install Vitest, Oxlint, Oxfmt, or tsdown directly:** Vite+ wraps these tools. They must not be installed directly. You cannot upgrade these tools by installing their latest versions. Always use Vite+ commands.
208+
- **Use Vite+ wrappers for one-off binaries:** Use `vp dlx` instead of package-manager-specific `dlx`/`npx` commands.
209+
- **Import JavaScript modules from `vite-plus`:** Instead of importing from `vite` or `vitest`, all modules should be imported from the project's `vite-plus` dependency. For example, `import { defineConfig } from 'vite-plus';` or `import { expect, test, vi } from 'vite-plus/test';`. You must not install `vitest` to import test utilities.
210+
- **Type-Aware Linting:** There is no need to install `oxlint-tsgolint`, `vp lint --type-aware` works out of the box.
211+
212+
## Review Checklist for Agents
213+
214+
- [ ] Run `vp install` after pulling remote changes and before getting started.
215+
- [ ] Run `vp check` and `vp test` to validate changes.
216+
<!--VITE PLUS END-->
217+
218+
<!--/injected-by-vite-plus-->

package.json

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"ci": "vp run cov && vp run prepublishOnly && npm pack && attw --pack",
6767
"clean": "rm -rf dist && tsc -b --clean",
6868
"prepublishOnly": "vp run build",
69-
"prepare": "husky",
69+
"prepare": "node -e \"const v = parseInt(process.versions.node, 10); if (v >= 20) require('child_process').execSync('vp config', {stdio: 'inherit'});\"",
7070
"check": "vp check",
7171
"check:fix": "vp check --fix"
7272
},
@@ -84,35 +84,30 @@
8484
"@eggjs/tsconfig": "^2.0.0",
8585
"@types/busboy": "^1.5.4",
8686
"@types/mime-types": "^2.1.4",
87-
"@types/node": "^22.19.11",
87+
"@types/node": "^22.19.15",
8888
"@types/proxy": "^1.0.4",
89-
"@types/qs": "^6.14.0",
89+
"@types/qs": "^6.15.0",
9090
"@types/selfsigned": "^2.1.0",
9191
"@types/tar-stream": "^2.2.3",
9292
"@typescript/native-preview": "7.0.0-dev.20260308.1",
9393
"@ungap/structured-clone": "^1.3.0",
9494
"@vitest/coverage-v8": "^4.0.18",
9595
"busboy": "^1.6.0",
9696
"cross-env": "^10.1.0",
97-
"husky": "^9.1.7",
9897
"iconv-lite": "^0.6.3",
99-
"lint-staged": "^16.2.7",
10098
"proxy": "^1.0.2",
10199
"selfsigned": "^3.0.1",
102100
"string.prototype.towellformed": "^1.0.2",
103101
"tar-stream": "^2.2.0",
104102
"tshy": "^3.3.2",
105103
"tshy-after": "^1.4.1",
106104
"typescript": "^5.9.3",
107-
"vite-plus": "^0.1.1",
108-
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.1"
105+
"vite-plus": "^0.1.4",
106+
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.4"
109107
},
110108
"overrides": {
111-
"vite": "npm:@voidzero-dev/vite-plus-core@^0.1.1",
112-
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.1"
113-
},
114-
"lint-staged": {
115-
"*": "vp check --fix"
109+
"vite": "npm:@voidzero-dev/vite-plus-core@^0.1.4",
110+
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.4"
116111
},
117112
"tshy": {
118113
"exports": {
@@ -126,8 +121,8 @@
126121
"packageManager": "pnpm@10.31.0",
127122
"pnpm": {
128123
"overrides": {
129-
"vite": "npm:@voidzero-dev/vite-plus-core@^0.1.1",
130-
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.1"
124+
"vite": "npm:@voidzero-dev/vite-plus-core@^0.1.4",
125+
"vitest": "npm:@voidzero-dev/vite-plus-test@^0.1.4"
131126
},
132127
"peerDependencyRules": {
133128
"allowAny": [

0 commit comments

Comments
 (0)