# 添加与移除微应用

逐步生成应用骨架、更新项目并手动移除应用，不使用不存在的命令。

<span id="añadir-una-aplicación"></span>

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

## 添加应用

```bash
wu add vue explorador --no-install
wu add react busqueda --no-install
wu install
```

在项目根目录运行 `add`。两个位置参数依次为**框架和名称**。唯一支持的选项是 `--no-install`，可先生成多个应用，最后统一安装依赖。

不带 `--no-install` 时，`add` 使用与 `wu install` 相同的汇总器和写入器，保留根字段并传播 npm 错误。根清单没有 `_wu` 时会在生成前停止；可用 `--no-install` 手动声明依赖，或用 `wu install --force` 接管清单。

<span id="qué-escribe"></span>

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

## 生成的内容

1. 验证框架和名称，并检查目标目录是否已经存在。
2. 在应用已用最大端口之后查找空闲端口；若没有空间，则从 5001 开始查找，并避开 shell 和代理端口。
3. 生成 `mf-<name>/`，包含 `package.json`、入口、组件和框架配置。不生成源文件 `wu.json`。
4. 如果配置来自 `wu.config.json`，则加入新应用并重写该文件。
5. 将 shell 和应用声明汇总到受管理的根清单。
6. 使用 npm 安装，除非传入 `--no-install`。

在使用依赖的应用或 shell 中声明特定依赖。`add` 保留自定义配置，并根据目录扩展 `shared`。JSON 错误包含行号和列号，不会将损坏的配置替换为新文件。

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

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

## 命名与 TypeScript

`wu add react mf-checkout` 会去掉传入名称的前缀，生成 `mf-checkout/`，不会重复添加 `mf-`。`mf_` 前缀同样如此。空名称或仅包含该前缀的名称会被拒绝。目录已存在时也会失败。

当 `supportsTs` 支持时，该命令会启用 TypeScript，与 `create` 的快速模式保持一致。HTMX、Alpine 和 Stimulus 继续使用 JavaScript。其他模板无法通过 `add` 选项改用 JavaScript。

<span id="integrar-una-aplicación-existente"></span>

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

## 集成现有应用

`add` 用于生成新应用。要接入现有应用，请在 `apps` 中声明其 `name`、`dir`、`framework`、端口和命令；调整入口以完成 WU 注册，并检查 `wu.json`。然后运行 `wu install`、`wu info`、`wu build`，并在浏览器中验证挂载。

名称用于在运行时目录中标识应用，目录用于定位文件并解析依赖覆盖。修改其中一项时，请检查所有使用该字段的地方，不要认为两者可以互换。

<span id="retirar-o-renombrar"></span>

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

## 移除或重命名

此版本未实现 `wu remove`，也没有重命名命令。移除应用时，需要删除 `apps` 中的条目，更新导航和挂载引用，再运行 `wu install` 重新计算依赖及覆盖配置。检查这些引用后，可以归档或删除应用目录。

重命名时，目录、`wu.config.json`、适配器注册的名称、`wu.json` 和 shell 使用的标识符必须保持一致。运行 `wu doctor` 查找过期的目录引用，并在发布前重新构建。

<span id="limitaciones-observadas"></span>

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

## 已确认的限制

没有 `wu.config.json` 时，`add` 使用自动发现计算依赖和端口，但不写入新配置。为了保持稳定拓扑，建议显式创建项目。生成文件失败会移除新目录；后续安装失败会以退出码 `1` 报告。

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

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

## 实现参考

- `wu-cli/src/commands/add.zig`
- `wu-cli/src/commands/install.zig`
- `wu-cli/src/config/names.zig`
- `wu-cli/tests/scaffold-writers.test.cjs`
- `wu-cli/tests/scaffold-security.test.cjs`