本文档概述了 Svelte 仓库的组织、目录结构以及其核心组件之间的关系。它解释了 Svelte 代码库如何作为单一代码库进行组织,并详细介绍了关键的包、站点和实用工具代码。
Svelte 使用 pnpm 作为其包管理器,并以单一代码库的形式进行组织。这种方法使开发团队能够在一个代码库中管理多个包和站点,简化了版本控制,并实现了更高效的依赖管理。
来源: package.json1-49 packages/svelte/package.json1-165
根目录包含管理整个单一代码库的配置文件和脚本
| 脚本 | 目的 |
|---|---|
build | 构建单一代码库中的所有包 |
build:sites | 构建所有站点 |
check | 在整个代码库中执行类型检查 |
test | 使用 Vitest 运行测试 |
changeset:version | 通过 changesets 管理版本更新 |
changeset:publish | 发布新版本 |
bench | 运行基准测试以进行性能评估 |
packages/ 目录包含核心 Svelte 包以及其他相关包。主要的包是 svelte,其中包含编译器和运行时。
来源: packages/svelte/package.json11-18 packages/svelte/package.json22-104
Svelte 包定义了多个导出路径,允许使用者导入特定功能
| 导出路径 | 描述 |
|---|---|
svelte | 主包入口点,包含特定环境的导出 |
svelte/animate | 动画工具 |
svelte/compiler | Svelte 编译器 API |
svelte/easing | 动画缓动函数 |
svelte/internal | 内部实用工具(不建议直接使用) |
svelte/motion | 运动原语,如弹簧和补间动画 |
svelte/reactivity | 响应式原语和实用工具 |
svelte/server | 服务器特定实用工具 |
svelte/store | Svelte store 实现 |
svelte/transition | 过渡效果 |
svelte/events | 事件处理实用工具 |
来源: packages/svelte/package.json22-104
包导出配置为提供浏览器和服务器环境的不同入口点,确保在每个环境中都使用适当的代码。
sites/ 目录包含与 Svelte 相关的 Web 应用程序
这些站点作为 Svelte 框架的示例、文档和测试平台。
来源: packages/svelte/package.json18
Svelte 使用 Rollup 进行打包,并使用 TypeScript 进行类型检查
来源: packages/svelte/package.json122-130
构建系统包括:
该仓库包含一个全面的测试设置
Svelte 使用 changesets 进行版本管理。当前版本信息存储在
来源: packages/svelte/src/version.js1-9 packages/svelte/CHANGELOG.md1-1011
这是仓库主要目录的简化视图
svelte-monorepo/
├── benchmarking/ # Performance benchmarking tools
├── packages/ # Core packages
│ └── svelte/ # Main Svelte package
│ ├── compiler/ # Compiler output for Node.js usage
│ ├── src/ # Source code
│ └── types/ # TypeScript definitions
├── playgrounds/ # Development playgrounds and examples
│ └── sandbox/ # Sandbox environment for testing
├── sites/ # Websites related to Svelte
│ └── svelte-5-preview/ # Svelte 5 preview site
└── ... configuration files
这种结构允许 Svelte 框架进行高效的开发、测试和文档编写,使贡献者更容易理解和修改代码库。
来源: package.json1-49 packages/svelte/package.json1-165 .gitignore1-27