本页面介绍了 Svelte 框架内可用的开发者工具和实用程序,以辅助开发、调试、错误检测和代码质量保证。它涵盖了 Svelte 的错误和警告系统、TypeScript 集成以及用于测试、迁移和贡献工作流的工具。
Svelte 提供了全面的错误和警告系统,可帮助开发人员在编译和运行时期间识别代码中的问题。
错误系统流程图
来源:packages/svelte/scripts/process-messages/index.js packages/svelte/src/internal/client/errors.js packages/svelte/messages/client-errors/errors.md
Svelte 的错误系统旨在为开发人员提供清晰、可操作的反馈。错误消息在 Markdown 文件中定义,由构建系统处理,然后通过生成的 JavaScript 模块公开。每条错误消息都包含:
https://svelte.net.cn/e/error_code)错误系统同时处理编译时错误(在组件编译期间检测到)和运行时错误(在组件执行期间遇到)。
警告系统架构
来源:packages/svelte/src/internal/client/warnings.js packages/svelte/messages/client-warnings/warnings.md packages/svelte/src/internal/client/dev/ownership.js
警告会提醒开发人员潜在的问题,这些问题不会阻止代码执行,但可能导致错误或次优行为。Svelte 的警告系统包含多个类别:
在开发模式下,Svelte 会用额外的上下文信息丰富错误和警告消息:
开发相关的代码通常位于 dev 子目录中,并根据 esm-env 包中的 DEV 环境变量进行条件包含。
Svelte 提供了专门用于调试响应式状态和验证组件所有权模式的工具。
来源:packages/svelte/src/internal/client/dev/ownership.js packages/svelte/messages/client-warnings/warnings.md
Svelte 提供了用于调试响应式状态的专用工具
$inspect Rune:允许跟踪随时间变化的响应性$state.snapshot():为调试创建一个响应式值的非响应式快照此外,Svelte 还包含一个所有权验证系统,有助于强制执行正确的组件边界。
当开发人员尝试使用 console.log() 直接记录响应式状态时,Svelte 会发出警告,指出此方法可能不会显示预期值,因为浏览器控制台显示的是代理而不是底层响应式值。它建议改用 $inspect 或 $state.snapshot()。
Svelte 提供全面的 TypeScript 支持,以增强开发人员通过类型安全的体验。
来源:packages/svelte/scripts/generate-types.js .github/workflows/ci.yml
Svelte 的 TypeScript 集成包括:
类型生成过程使用 dts-buddy 从源 .d.ts 文件创建捆绑的类型定义。这可确保代码库的一致性,并使用 @internal JSDoc 标签移除内部 API 的公共类型定义。
Svelte 维护一个强大的测试和持续集成系统,以确保代码质量。
来源:.github/workflows/ci.yml .github/workflows/release.yml CONTRIBUTING.md
Svelte 的测试基础架构包括:
测试类别:
CI 工作流:
发布流程:
Svelte 提供了一个用于轻松测试开发版本的系统。
来源:.github/workflows/pkg.pr.new.yml .github/workflows/pkg.pr.new-comment.yml
对于每个拉取请求,Svelte 会自动:
此系统允许贡献者和审阅者在合并更改之前轻松测试它们。
Svelte 提供工具以帮助开发人员在版本之间迁移并检测已弃用的模式。
来源:packages/svelte/src/internal/client/dev/legacy.js packages/svelte/messages/client-errors/errors.md
Svelte 提供了多种迁移工具
sv migrate 命令可以将代码转换为符合新语法模式主要的迁移相关警告包括:
Svelte 具有结构化的贡献者工作流程,供其遵循以提交更改。
来源:CONTRIBUTING.md .github/PULL_REQUEST_TEMPLATE.md .github/workflows/release.yml
Svelte 的贡献工作流包括:
| 任务 | 工具/方法 | 描述 |
|---|---|---|
| 调试状态响应性 | $inspect | 用于跟踪响应式值随时间的变化 |
| 分析状态结构 | $state.snapshot() | 为响应式状态创建时间点快照 |
| 查找水合问题 | 水合警告 | 查找服务器和客户端不匹配的警告 |
| 修复所有权问题 | 所有权警告 | 处理不当的 prop 修改警告 |
| 检查可访问性 (a11y) 问题 | 可访问性 (a11y) 警告 | 在控制台中查看可访问性警告 |
| 测试 PR 更改 | pkg.pr.new | 使用提供的 playground 链接或安装命令 |
| 运行类型检查 | pnpm check | 验证 TypeScript 类型正确性 |
| 验证测试通过 | pnpm test | 在本地运行测试套件 |
来源: CONTRIBUTING.md packages/svelte/messages/client-warnings/warnings.md
Svelte 提供了一套全面的开发工具,有助于调试、错误检测、测试和代码质量保证。这些工具旨在为开发人员提供清晰、可操作的反馈,并全程保持项目高标准的代码质量。