# 创建项目

交互模式、可复现的应用骨架、Astro shell 和生成的 TypeScript。

版本、变更与要求见 [Framework 3.2 与 CLI 1.0](/zh-cn/docs/guides/releases/)。


<span id="creación-reproducible"></span>

<span class="section-anchor" id="section-1"></span>

## 可复现地创建项目

```bash
wu create conocimiento --template react --shell astro
```

同时提供名称和模板时启用快速模式。它生成 `conocimiento/`、Astro shell、名为 `conocimiento` 的 React 微应用、配置和清单。**此模式不安装依赖。** 完成后会建议进入目录并运行 `wu install` 和 `wu dev`。

```text
conocimiento/
  .gitignore
  package.json
  wu.config.json
  shell/
    package.json
    astro.config.mjs
    src/pages/index.astro
    src/styles/wu-shell.css
  mf-conocimiento/
    package.json
    index.html
    vite.config.js
    src/main.tsx
    src/App.tsx
```

目录结构展示了这种组合的主要文件。其他框架会采用不同的扩展名、组件和配置。生成器不写入源 `wu.json`：开发服务器可以动态生成，构建会写入生产清单。应用需要声明契约或权限时，请显式创建此文件。

新项目包含 `.gitignore`，忽略依赖、构建、缓存、日志、PEM 密钥和 `.env`，但保留 `.env.example`。`wu upgrade` 可将这些规则添加到旧项目，同时保留现有规则。

<span id="opciones-reconocidas"></span>

<span class="section-anchor" id="section-2"></span>

## 支持的选项

| 参数 | 别名 | 作用 |
| --- | --- | --- |
| 名称位置参数 | — | 快速模式中的项目目录和首个应用名称 |
| `--template <framework>` | `-t` | 生成的微应用框架 |
| `--shell <framework>` | `-s` | 快速模式中的 shell 框架 |

省略 `--shell` 时，shell 使用 `--template` 的选择；具体可能是框架专用 shell，也可能是通用 shell。只提供 `--shell` 而不提供 `--template` 不会预先配置向导，交互流程仍会重新询问 shell。

`create` 没有 `--no-install`，因为快速模式本来就不执行安装。也没有公开的 `--typescript`、`--yes`、`--package-manager` 或 `--apps` 选项。自动化此版本时，只使用表格列出的约定。

<span id="asistente-interactivo"></span>

<span class="section-anchor" id="section-3"></span>

## 交互式向导

```bash
wu create
```

向导使用终端 raw 模式，依次询问名称、shell 和各微应用；模板支持时提供 TypeScript 选择。应用端口从 5001 开始递增。交互流程最多支持 16 个应用；更大的拓扑应使用显式配置。

向导要求确认生成和安装，然后执行 `wu install`。安装失败返回 `1`；无终端时也返回 `1` 并显示快速模式。Ctrl+C 取消时返回 `130`。快速模式仍不安装依赖。

<span id="nombres-y-validaciones"></span>

<span class="section-anchor" id="section-4"></span>

## 名称与验证

目标目录已存在时，创建命令以退出码 1 拒绝执行。未知模板也会失败。Astro 和 Next 属于 shell 目录，不能用作微应用的 `--template`。

应用名称经规范化后按 `^[a-z][a-z0-9-]{0,31}$` 验证，并排除 Windows 保留名称。项目名称最多 64 个字符，不允许路径或空格；快速模式的首个应用还需满足 32 字符限制。生成失败不会留下不完整目录。

<span id="astro-dentro-del-proyecto-wu"></span>

<span class="section-anchor" id="section-5"></span>

## WU 项目中的 Astro

Astro 使用自身 bundler 编译 shell。WU 提供其输出，并通过各自的 WU 入口挂载微应用。应用骨架不会把 React 或 Vue 转换为 Astro islands；应用之间的组合由 WU 运行时负责。

生成的 shell 导入样式表、初始化框架，并读取 CLI 插入的应用目录。配置声明 `npx astro dev` 和 `npx astro build`。原生开发模式中，WU 使用 Astro 构建输出，并在源码变化时重新构建。

<span id="referencia-de-implementación"></span>

<span class="section-anchor" id="section-6"></span>

## 实现参考

- `wu-cli/src/commands/create.zig`
- `wu-cli/src/config/names.zig`
- `wu-cli/src/config/catalog.zig`
- `wu-cli/src/commands/templates/astro-shell.index.astro`
- `wu-cli/tests/create-exit-code.test.cjs`
- `wu-cli/tests/wizard-keys.test.cjs`
- `wu-cli/tests/gitignore.test.cjs`