WU / 文档通用微前端
中文

创建项目

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

版本、变更与要求见 Framework 3.2 与 CLI 1.0。

可复现地创建项目

wu create conocimiento --template react --shell astro

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

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 可将这些规则添加到旧项目,同时保留现有规则。

支持的选项

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

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

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

交互式向导

wu create

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

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

名称与验证

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

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

WU 项目中的 Astro

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

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

实现参考

  • 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
一起完善 WU

发现了问题?有新的想法?

你的使用体验能让 WU 变得更好。告诉我们遇到的问题,或支持项目的持续开发。