voidzero-dev/vite-plus
GitHub: voidzero-dev/vite-plus
Vite+ 将运行时、包管理、开发服务器、Lint、格式化、测试、构建和 Monorepo 任务统一为单一依赖的零配置前端工具链。
Stars: 1382 | Forks: 43
**Web 的统一工具链**
_运行时和包管理、创建、开发、检查、测试、构建、打包以及 monorepo 任务缓存,集成在单一依赖中_
Vite+ 是本地 Web 开发的统一入口点。它将 [Vite](https://vite.dev/)、[Vitest](https://vitest.dev/)、[Oxlint](https://oxc.rs/docs/guide/usage/linter.html)、[Oxfmt](https://oxc.rs/docs/guide/usage/formatter.html)、[Rolldown](https://rolldown.rs/)、[tsdown](https://tsdown.dev/) 和 [Vite Task](https://github.com/voidzero-dev/vite-task) 结合成一个零配置的工具链,同时管理运行时和包管理器工作流:
- **`vp env`:** 全局及按项目管理 Node.js
- **`vp install`:** 通过自动检测包管理器来安装依赖
- **`vp dev`:** 运行 Vite 原生 ESM 开发服务器,支持即时 HMR
- **`vp check`:** 一条命令运行格式化、lint 和类型检查
- **`vp test`:** 通过内置的 Vitest 运行测试
- **`vp build`:** 使用 Vite + Rolldown 构建生产环境应用
- **`vp run`:** 执行带有缓存和依赖感知调度的 monorepo 任务
- **`vp pack`:** 构建 npm 发布库或独立应用二进制文件
- **`vp create` / `vp migrate`:** 脚手架新项目并迁移现有项目
所有这些都从项目根目录配置,并适用于 Vite 的框架生态系统。
Vite+ 完全开源,采用 MIT 许可证。
## 快速开始
将 Vite+ 全局安装为 `vp`:
对于 Linux 或 macOS:
```
curl -fsSL https://vite.plus | bash
```
对于 Windows:
```
irm https://viteplus.dev/install.ps1 | iex
```
`vp` 处理完整的开发生命周期,例如包管理、开发服务器、lint、格式化、测试以及生产环境构建。
## 配置 Vite+
可以使用项目根目录下的单个 `vite.config.ts` 配置 Vite+:
```
import { defineConfig } from 'vite-plus';
export default defineConfig({
// Standard Vite configuration for dev/build/preview.
plugins: [],
// Vitest configuration.
test: {
include: ['src/**/*.test.ts'],
},
// Oxlint configuration.
lint: {
ignorePatterns: ['dist/**'],
},
// Oxfmt configuration.
fmt: {
semi: true,
singleQuote: true,
},
// Vite Task configuration.
run: {
tasks: {
'generate:icons': {
command: 'node scripts/generate-icons.js',
envs: ['ICON_THEME'],
},
},
},
// `vp staged` configuration.
staged: {
'*': 'vp check --fix',
},
});
```
这让你可以将开发服务器、构建、测试、lint、格式化、任务运行器和暂存文件工作流的配置保存在一处,具有类型安全的配置和共享默认值。
使用 `vp migrate` 迁移到 Vite+。它将工具特定的配置文件(如 `.oxlintrc*`、`.oxfmtrc*` 和 lint-staged 配置)合并到 `vite.config.ts` 中。
### CLI 工作流 (`vp help`)
#### 开始
- **create** - 从模板创建新项目
- **migrate** - 将现有项目迁移到 Vite+
- **config** - 配置 hooks 和 agent 集成
- **staged** - 在暂存文件上运行 linter
- **install** (`i`) - 安装依赖
- **env** - 管理 Node.js 版本
#### 开发
- **dev** - 运行开发服务器
- **check** - 运行格式、lint 和类型检查
- **lint** - Lint 代码
- **fmt** - 格式化代码
- **test** - 运行测试
#### 执行
- **run** - 运行 monorepo 任务
- **exec** - 从本地 `node_modules/.bin` 执行命令
- **dlx** - 执行包二进制文件而无需将其安装为依赖
- **cache** - 管理任务缓存
#### 构建
- **build** - 为生产环境构建
- **pack** - 构建库
- **preview** - 预览生产环境构建
#### 管理依赖
Vite+ 根据 `packageManager` 和 lockfiles 自动包装你的包管理器(pnpm、npm 或 Yarn):
- **add** - 将包添加到依赖
- **remove** (`rm`, `un`, `uninstall`) - 从依赖中移除包
- **update** (`up`) - 将包更新到最新版本
- **dedupe** - 对依赖进行去重
- **outdated** - 检查过时的包
- **list** (`ls`) - 列出已安装的包
- **why** (`explain`) - 显示为何安装某个包
- **info** (`view`, `show`) - 查看 registry 中的包元数据
- **link** (`ln`) / **unlink** - 管理本地包链接
- **pm** - 将命令转发给包管理器
#### 维护
- **upgrade** - 将 `vp` 自身更新到最新版本
- **implode** - 移除 `vp` 及所有相关数据
### 脚手架你的第一个 Vite+ 项目
使用 `vp create` 创建新项目:
```
vp create
```
你可以在项目内部运行 `vp create`,以向项目添加新的应用或库。
### 迁移现有项目
你可以将现有项目迁移到 Vite+:
```
vp migrate
```
### GitHub Actions
使用官方 [`setup-vp`](https://github.com/voidzero-dev/setup-vp) action 在 GitHub Actions 中安装 Vite+:
```
- uses: voidzero-dev/setup-vp@v1
with:
node-version: '22'
cache: true
```
#### 手动安装与迁移
如果你正在手动将项目迁移到 Vite+,请先安装这些 dev 依赖:
```
npm install -D vite-plus @voidzero-dev/vite-plus-core@latest
```
你需要向包管理器添加 `vite` 和 `vitest` 的 overrides,以便其他依赖 Vite 和 Vitest 的包使用 Vite+ 版本:
```
"overrides": {
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
}
```
如果你使用的是 `pnpm`,请将此添加到你的 `pnpm-workspace.yaml`:
```
overrides:
vite: npm:@voidzero-dev/vite-plus-core@latest
vitest: npm:@voidzero-dev/vite-plus-test@latest
```
或者,如果你使用的是 Yarn:
```
"resolutions": {
"vite": "npm:@voidzero-dev/vite-plus-core@latest",
"vitest": "npm:@voidzero-dev/vite-plus-test@latest"
}
```
标签:CLI, DNS解析, GNU通用公共许可证, HMR, MITM代理, MIT许可, Node.js, Oxlint, Rolldown, Syscall, TypeScript, Vite, Vitest, Web开发, WiFi技术, 任务调度, 依赖管理, 包管理器, 单仓库, 可视化界面, 安全插件, 工程化, 开发服务器, 开源项目, 打包工具, 格式化工具, 测试框架, 热更新, 统一API, 统一工具链, 网络调试, 脚手架, 自动化, 运行时管理, 通知系统, 零配置