库 / SDK
solidjs/solid-start avatar
solidjs/solid-start

SolidStart 2.0 开发分支实测指南:从 monorepo 布局到 E2E 测试流程

SolidStart,Solid 应用程序框架。测试您的更改 对于固定装置,选择固定装置的名称并使用工作区过滤运行开发。

5,921 个 Star425 个 ForkTypeScriptMIT

秒懂

它是什么?
SolidStart 是 Solid 官方应用框架,本文基于其 2.0 开发分支的仓库结构,梳理本地搭建、测试、开发的具体命令与目录逻辑,并指出当前分支的适用边界。
适合谁用?
SolidStart 2.0 开发分支适合两类人:一是想提前适配 Solid 下一代框架的插件或模板作者,二是愿意忍受不稳定并愿意反馈问题的早期采用者。不适合需要稳定生产环境的团队,因为该分支明确标注为 heavy development,且 1.x 才是当前维护版本。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 5 天前。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

这个仓库解决什么问题,给谁用

SolidStart 是 Solid 框架的官方应用框架,目标是让 Solid 开发者可以构建全栈应用,包括服务端渲染、路由、数据加载等能力。但这个仓库不是给普通应用开发者直接使用的,它更像是一个开发基地。README 明确指出,构建应用应该去查看 packages/start 目录下的包 README 和官方文档,而这个仓库本身是给框架贡献者、模板作者和想要提前体验 2.0 特性的人准备的。它当前的主分支是 2.0.0-alpha,处于 heavy development 状态,也就是说,这里的一切都可能随时变化。

monorepo 目录:不是你想的那样简单

这个仓库是 pnpm 管理的 monorepo,但并不是单一 workspace,而是嵌套 workspace。你会在根目录看到 packages/start 存放核心包,apps/landing-page 是官方落地页,apps/tests 放单元测试和 E2E 测试,apps/fixtures 放用于手动调试的示例项目。这种嵌套结构意味着你不能只靠根目录的 pnpm install 就完事,必须使用 pnpm filter 来定位具体包。比如要启动一个 fixture,命令是 pnpm --filter fixture-basic dev。这种设计让每个 fixture 可以独立运行,但也增加了初学者的认知负担。

本地搭建:corepack 和 pnpm dedupe 是关键

按照 README,本地搭建的第一步是克隆仓库,然后执行 corepack enable 来启用 package.json 中指定的 pnpm 版本。这里有个值得注意的细节:安装依赖的命令不是 pnpm install,而是 pnpm dedupe。README 解释这个命令会安装依赖并清理 lockfile 中的重复项,防止冲突。如果你遇到 node_modules 缺失的问题,需要运行 pnpm run clean:all 清理整个 workspace,然后重新安装。这个流程比普通项目多了一步,但考虑到 monorepo 的复杂性,这是合理的。

测试体系:单元测试和 E2E 是分开的

测试分为两层。单元测试和集成测试位于各自包内,而 E2E 测试集中在 apps/tests 项目里。运行 E2E 之前,必须先安装 Playwright 的 Chromium 二进制,命令是 pnpm --filter tests exec playwright install chromium。然后还需要先构建测试应用,pnpm --filter tests run build,否则单元测试无法检查构建产物。之后可以运行 pnpm --filter tests run unit 进入 vitest 的 watch 模式,或者用 pnpm --filter tests run e2e 跑 Playwright。如果你想要 UI 模式,对应的是 unit:ui 和 e2e:ui。这个流程对 CI 环境友好,因为 CI 模式是 unit:ci,只跑一次。

开发循环:用 fixture 而不是自己搭 demo

开发时,你不需要创建临时 demo 应用,而是直接修改 packages/start 下的源码,然后重建包,再选择一个 fixture 来验证。fixture 是预设好的示例项目,比如 fixture-basic。你可以用 pnpm --filter fixture-basic dev 启动它,这样就能在真实场景下测试你的改动。这种工作流比每次手动创建测试项目高效得多,但也意味着你必须熟悉 fixture 的命名和内容。如果你需要修改落地页,则是 pnpm run lp:dev。清理时,packages:clean 会清掉所有包的 node_modules 和 dist,lp:clean 清落地页,clean:root 清根级缓存。

这个分支的局限:别把它当稳定版用

最大的局限就是它本身。README 顶部用 IMPORTANT 标记声明这是 2.0.0-alpha 分支,处于重开发阶段,而当前维护版本是 1.x 分支。这意味着你在这个分支上写的代码,可能在下一个 commit 就失效。另外,测试命令依赖 pnpm filter,如果你只熟悉 npm 或 yarn,会有一段适应期。还有一点,所有测试都要求先构建,这增加了迭代时间,你每次改完源码都要跑 packages:build 才能测试。对于只想快速体验 Solid 的人来说,这个仓库不是入口,你应该去 packages/start 的 README 或官方文档。

替代方案:直接使用 1.x 或官方文档

如果你不需要 2.0 的新特性,最直接的替代方案是切换到 1.x 分支,那里是当前维护版本。1.x 的稳定性和文档完整度远高于这个 alpha 分支。另一个替代方案是忽略这个仓库,直接访问 start.solidjs.com 和 docs.solidjs.com/solid-start,那里有面向应用开发者的完整指南。区别在于,这个仓库是给框架贡献者用的,而官方文档是给应用开发者用的。如果你只是想用 SolidStart 写应用,你不需要克隆这个仓库,只需要在 npm 上安装 @solidjs/start 即可。

编辑结论

SolidStart 2.0 开发分支适合两类人:一是想提前适配 Solid 下一代框架的插件或模板作者,二是愿意忍受不稳定并愿意反馈问题的早期采用者。不适合需要稳定生产环境的团队,因为该分支明确标注为 heavy development,且 1.x 才是当前维护版本。在开始之前,务必确认你的 Node.js 版本与 .nvmrc 一致,并启用 Corepack 来锁定 pnpm 版本。另外,所有测试命令都依赖 pnpm filter,如果你不熟悉 pnpm workspace,建议先阅读 pnpm 文档。最终判断:如果你能接受用 pnpm dedupe 代替常规 install 并习惯用 fixture 调试,这个分支值得一试;否则请直接使用 1.x 分支。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记