Skip to content

Commit 8b914d9

Browse files
committed
chore: migrate from Husky to vp config for git hooks
- Replace Husky pre-commit hook with .vite-hooks/pre-commit - Move lint-staged config from package.json to vite.config.ts - Remove husky and lint-staged dependencies - 'vp config': Add Claude MCP server configuration for vite-plus - 'vp config': Update CLAUDE.md with Vite+ workflow documentation
1 parent e3607ec commit 8b914d9

File tree

9 files changed

+95
-18
lines changed

9 files changed

+95
-18
lines changed

.claude/settings.json

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

.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: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,80 @@ pnpm -F vite-plus snap-test-global <name-filter>
136136
```
137137

138138
The snap test will automatically generate/update the `snap.txt` file with the command outputs. It exits with zero status even if there are output differences; you need to manually check the diffs(`git diff`) to verify correctness.
139+
140+
<!--VITE PLUS START-->
141+
142+
# Using Vite+, the Unified Toolchain for the Web
143+
144+
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`.
145+
146+
## Vite+ Workflow
147+
148+
`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.
149+
150+
### Start
151+
152+
- create - Create a new project from a template
153+
- migrate - Migrate an existing project to Vite+
154+
- config - Configure hooks and agent integration
155+
- staged - Run linters on staged files
156+
- install (`i`) - Install dependencies
157+
- env - Manage Node.js versions
158+
159+
### Develop
160+
161+
- dev - Run the development server
162+
- check - Run format, lint, and TypeScript type checks
163+
- lint - Lint code
164+
- fmt - Format code
165+
- test - Run tests
166+
167+
### Execute
168+
169+
- run - Run monorepo tasks
170+
- exec - Execute a command from local `node_modules/.bin`
171+
- dlx - Execute a package binary without installing it as a dependency
172+
- cache - Manage the task cache
173+
174+
### Build
175+
176+
- build - Build for production
177+
- pack - Build libraries
178+
- preview - Preview production build
179+
180+
### Manage Dependencies
181+
182+
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.
183+
184+
- add - Add packages to dependencies
185+
- remove (`rm`, `un`, `uninstall`) - Remove packages from dependencies
186+
- update (`up`) - Update packages to latest versions
187+
- dedupe - Deduplicate dependencies
188+
- outdated - Check for outdated packages
189+
- list (`ls`) - List installed packages
190+
- why (`explain`) - Show why a package is installed
191+
- info (`view`, `show`) - View package information from the registry
192+
- link (`ln`) / unlink - Manage local package links
193+
- pm - Forward a command to the package manager
194+
195+
### Maintain
196+
197+
- upgrade - Update `vp` itself to the latest version
198+
199+
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.
200+
201+
## Common Pitfalls
202+
203+
- **Using the package manager directly:** Do not use pnpm, npm, or Yarn directly. Vite+ can handle all package manager operations.
204+
- **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.
205+
- **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`.
206+
- **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.
207+
- **Use Vite+ wrappers for one-off binaries:** Use `vp dlx` instead of package-manager-specific `dlx`/`npx` commands.
208+
- **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.
209+
- **Type-Aware Linting:** There is no need to install `oxlint-tsgolint`, `vp lint --type-aware` works out of the box.
210+
211+
## Review Checklist for Agents
212+
213+
- [ ] Run `vp install` after pulling remote changes and before getting started.
214+
- [ ] Run `vp check` and `vp test` to validate changes.
215+
<!--VITE PLUS END-->

package.json

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"test:unit": "vp test run",
1616
"docs:dev": "pnpm --filter=./docs dev",
1717
"docs:build": "pnpm --filter=./docs build",
18-
"prepare": "husky"
18+
"prepare": "vp config"
1919
},
2020
"devDependencies": {
2121
"@napi-rs/cli": "catalog:",
@@ -25,8 +25,6 @@
2525
"@typescript/native-preview": "catalog:",
2626
"@voidzero-dev/vite-plus-tools": "workspace:*",
2727
"bingo": "catalog:",
28-
"husky": "catalog:",
29-
"lint-staged": "catalog:",
3028
"oxfmt": "catalog:",
3129
"oxlint": "catalog:",
3230
"playwright": "catalog:",
@@ -36,10 +34,6 @@
3634
"vitest": "catalog:",
3735
"zod": "catalog:"
3836
},
39-
"lint-staged": {
40-
"*.@(js|ts|tsx|md|yaml|yml)": "vp check --fix",
41-
"*.rs": "cargo fmt --"
42-
},
4337
"engines": {
4438
"node": ">=22.18.0"
4539
},

pnpm-lock.yaml

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ catalog:
6868
follow-redirects: ^1.15.6
6969
fs-extra: ^11.3.2
7070
glob: ^13.0.0
71-
husky: ^9.1.7
7271
jsonc-parser: ^3.3.1
7372
lint-staged: ^16.2.6
7473
lodash-es: ^4.17.21

vite.config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { defineConfig } from 'vite-plus';
22

33
export default defineConfig({
4+
staged: {
5+
'*.@(js|ts|tsx|md|yaml|yml)': 'vp check --fix',
6+
'*.rs': 'cargo fmt --',
7+
},
48
lint: {
59
options: {
610
typeAware: true,

0 commit comments

Comments
 (0)