diff --git a/docs/默认模板配置更新流程.md b/docs/默认模板配置更新流程.md new file mode 100644 index 0000000..8610e4e --- /dev/null +++ b/docs/默认模板配置更新流程.md @@ -0,0 +1,180 @@ +# 默认模板配置更新流程 + +本文档详细说明了 Bolt 系统中默认模板的配置更新方法,以及相关的运行流程。这个过程对于理解 Bolt 的初始化和模板管理机制至关重要。 + +## 1. 模板定义 + +模板定义在 `app/utils/templates.ts` 文件中: + +```typescript +export const templates = { +basic: { +name: "Basic", +template: { +'index.js': { +file: { +contents: console.log('Hello, WebContainer!');, +}, +}, +'package.json': { +file: { +contents: { "name": "webcontainer-project", "version": "1.0.0", "description": "A basic WebContainer project", "main": "index.js", "scripts": { "start": "node index.js" }}, +}, +}, +}, +}, +react: { +name: "React", +template: { +// 定义 React 项目模板 +}, +}, +// 可以添加更多模板... +}; +export type TemplateName = keyof typeof templates; +``` + +这里定义了不同的项目模板,每个模板包含了初始文件结构和内容。 + +## 2. 获取初始模板 + +`getInitialTemplate` 函数用于获取指定的模板: + +```typescript +export async function getInitialTemplate(templateName: TemplateName = 'basic'): Promise { + return templates[templateName].template; +} +``` + +这个函数接受一个可选的 `templateName` 参数,默认值为 'basic'。它返回指定模板的文件系统树结构。 + +## 3. 模板选择器组件 + +在 `app/components/workbench/TemplateSelector.tsx` 中定义了模板选择器组件: + +```tsx +export const TemplateSelector = memo(({ className, value, onChange }: TemplateSelectorProps) => { + return ( +