news 2026/8/8 10:21:55

turbo迁移vite-plus实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
turbo迁移vite-plus实践

Turbo是一个高性能的构建系统,结合pnpm monorepo使用非常流行。它通过任务调度与缓存机制,大幅提升多仓库开发体验。

vite+(vite-plus)则提供了一套统一的工具链(vite、vitest、oxlint、oxfmt、rolldown、tsdown、vite task 等),将所有配置集中到vite.config中进行管理,从而解决生态碎片化问题。

Turbo 迁移到 vite+的核心收益也在于此:不仅可以实现与 Turbo 类似的任务调度与缓存能力,还能无缝融入 Vite 生态。从长期来看,这一方向具备很大的发展潜力。


一、移除 Turbo 相关配置

首先,清理项目中所有 Turbo 相关内容:

  1. 移除依赖:pnpm remove turbo

  2. 删除配置文件:turbo.json

  3. 删除缓存目录:.turbo(包括根目录及各 packages 子目录)

  4. 清理.gitignore中的相关配置:.turbo


二、安装与配置 vite+

1. 安装 vite+

# Windows(PowerShell)irm https://vite.plus/ps1|iex# macOS / Linuxcurl-fsSLhttps://vite.plus|bash

⚠️ 由于当前项目是基于 Turbo 做任务调度的,因此无法直接使用vp migrate自动迁移,需要手动调整配置。


2. 依赖迁移

情况一:使用 workspace 的catalog/catalogs管理依赖

catalog: - vite: ^8.0.0 + vite: npm:@voidzero-dev/vite-plus-core@latest - vitest: ^4.1.0 + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: ^0.1.12 # catalogs 同理 + overrides: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest

情况二:直接在package.json中管理依赖

{ "devDependencies": { - "vite": "^8.0.0", - "vitest": "^4.1.0", + "vite": "npm:@voidzero-dev/vite-plus-core@latest", + "vite-plus": "latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest" }, "pnpm": { + "overrides": { + "vite": "npm:@voidzero-dev/vite-plus-core@latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest" + } } }

3. vite.config 配置

- import { defineConfig } from 'vite' + import { defineConfig } from 'vite-plus' export default defineConfig({ run: { tasks: {...}, // 任务调度 cache: {...}, // 缓存 }, fmt: {...}, // 使用 oxfmt,替代 prettier lint: {...}, // 使用 oxlint,替代 eslint test: {...}, // vitest pack: {...}, // tsdown(库打包,类似 tsup / rollup) staged: {...} // 替代 lint-staged })

三、任务调度与缓存

由于本文实践是从 Turbo 迁移到 vite+,这里重点说明任务调度与缓存的实现方式。

项目结构

apps/ └─ playground packages/ ├─ module-a └─ module-b

Turbo 原配置

{"$schema":"https://turborepo.com/schema.json","tasks":{"build":{"outputs":["dist/**"]},"dev":{"persistent":true,"cache":false,"dependsOn":["^build"],"interactive":false}}}

vite+ 实现方式

💡 注意:
在 vite+ 目前版本中,package.json 的 scripts 名称不能与 tasks 重名
例如:scripts 中有dev,那么 tasks 中就不能再叫dev,否则会报错。


方式一:自定义任务编排(最灵活)

exportdefaultdefineConfig({run:{tasks:{task1:{command:['vp run --filter "@my-app/*" build','vp run --filter ./apps/playground dev'].join(' && '),input:[{auto:true},'!**/*.tsbuildinfo']}},cache:{scripts:true,// 默认 false,开启后缓存 scriptstasks:true// 默认 true}}})

方式二:递归执行(按依赖顺序)

tasks:{task2:{command:'vp run -r build',input:[{auto:true},'!**/*.tsbuildinfo']}}

方式三:手动控制执行顺序

tasks:{task3:{command:['vp run --filter "@my-app/c" build','vp run --filter "@my-app/a" build','vp run --filter "@my-app/b" build','vp run --filter ./apps/playground dev'].join(' && '),input:[{auto:true},'!**/*.tsbuildinfo']}}

package.json scripts 调整

{ "scripts": { - "dev": "turbo run dev --filter=\"./apps/*\"", + "dev": "vp run task1", + "dev2": "vp run task2 && pnpm -F ./apps/playground dev" } }

四、总结

从 Turbo 迁移到 vite+,本质是从「多工具拼装」走向「统一工具链」:

  • ✅ 任务调度能力:≈ Turbo
  • ✅ 缓存机制:≈ Turbo
  • ✅ 工具链整合:明显更优(fmt / lint / test / build 一体化)
  • ✅ 配置集中:全部收敛到vite.config

如果你的项目正在被eslint / prettier / tsup / turbo等工具割裂,vite+ 是一个值得尝试的统一方案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:24:56

Claude Code Skills 资源大盘点:导航站 + GitHub 精选仓库全整理

先说几个我觉得必装的 Skills 文档类 Skills(docx / pdf / pptx / xlsx) 这四个是我用得最高频的。本质上是把怎么用 Python 库生成对应格式文件的最佳实践打包进去,让 CC 不会每次都写出奇奇怪怪的代码。 docx skill:生成带目…

作者头像 李华
网站建设 2026/7/14 15:25:08

服务器中都有哪些常见的安全问题?

服务器作为企业数据与业务的核心枢纽,其安全性直接关乎用户信任与商业存续。恶意攻击、配置疏漏及内部风险交织,形成复杂的安全威胁图谱。以下从攻击类型、漏洞利用、数据风险三个维度,系统梳理服务器面临的典型安全问题:一、网络…

作者头像 李华
网站建设 2026/7/14 15:25:06

青少年CTF实战:从万能密码到图片隐写,手把手教你破解CheckMe系列题目

青少年CTF实战:从万能密码到图片隐写,手把手教你破解CheckMe系列题目 在CTF竞赛的世界里,每一道题目都像是一个等待解开的谜团。对于青少年参赛者来说,CheckMe系列题目往往成为他们接触网络安全竞赛的第一道门槛。这些题目看似简单…

作者头像 李华
网站建设 2026/7/14 15:25:09

用Qwen3-VL-8B搭建智能客服:用户上传截图,AI自动答疑

用Qwen3-VL-8B搭建智能客服:用户上传截图,AI自动答疑 1. 为什么选择Qwen3-VL-8B做智能客服? 想象一下这个场景:用户在使用你的产品时遇到问题,他们不再需要费力打字描述问题,而是直接截图上传&#xff0c…

作者头像 李华
网站建设 2026/7/14 15:25:08

Java毕业设计基于springboot的宿舍报修系统61368153

前言 在宿舍或公寓管理中,设施损坏和维修需求是常见的挑战。传统的报修方式往往依赖于人工登记、电话报修等,这些方式不仅效率低下,还容易产生信息误差,难以及时响应和处理报修请求。因此,开发一款基于Spring Boot的宿…

作者头像 李华