Commit abc3b2a
authored
feat: add lazyPlugins() helper for conditional plugin loading (#1215)
## Summary
Add `lazyPlugins()` helper that conditionally loads plugins based on the
`VP_COMMAND` environment variable. Plugins load for vite commands
(`dev`, `build`, `test`, `preview`) and when `VP_COMMAND` is unset
(e.g., running vitest directly or via VS Code extension). Skipped for
non-vite commands (`lint`, `fmt`, `check`, etc.).
Refs vitejs/vite#22085
### Usage
```ts
import { defineConfig, lazyPlugins } from 'vite-plus'
// sync
export default defineConfig({
plugins: lazyPlugins(() => [fooPlugin()]),
})
// async with dynamic import
export default defineConfig({
plugins: lazyPlugins(async () => {
const { default: heavyPlugin } = await import('vite-plugin-heavy');
return [heavyPlugin()];
}),
})
```
### How it works
- `bin.ts` sets `VP_COMMAND` env var from the CLI command argument
- Rust resolver injects `VP_COMMAND` into child process envs for
synthesized subcommands (fixes `vp run build` case)
- `lazyPlugins` checks `VP_COMMAND` — executes callback for vite
commands, returns `undefined` otherwise
- Async callbacks have their Promise wrapped in an array internally for
Vite's `asyncFlatten`
## Test plan
- [x] Unit tests: 30 tests — lazyPlugins behavior, type compatibility
with `plugins` field, defineConfig compatibility, vitest plugin hooks
- [x] Snap tests: 6 cases — sync build, async build, vitest plugin,
skip-on-lint, `vp run build`, `vp run lint`
- [x] `vp check` passes (format + lint)
- [x] Windows CI: forward-slash path normalization fix for snap test
stability
🤖 Generated with [Claude Code](https://claude.com/claude-code)1 parent d202f3f commit abc3b2a
File tree
47 files changed
+502
-142
lines changed- docs
- config
- guide
- packages
- cli
- binding/src/cli
- snap-tests
- vite-plugins-async-test
- src
- vite-plugins-async
- vite-plugins-run-build
- vite-plugins-run-lint
- src
- vite-plugins-skip-on-lint
- src
- vite-plugins-sync
- src
- __tests__
- tools/src
- __tests__
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
47 files changed
+502
-142
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
92 | 120 | | |
93 | 121 | | |
94 | 122 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
68 | 68 | | |
69 | 69 | | |
70 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
71 | 87 | | |
72 | 88 | | |
73 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
102 | 102 | | |
103 | 103 | | |
104 | 104 | | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
105 | 123 | | |
106 | 124 | | |
107 | 125 | | |
| |||
Lines changed: 14 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
Lines changed: 13 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
Lines changed: 5 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
0 commit comments