Skip to content

从 umi 迁移 ​

umi 是 Cormi 的能力清单:一个全栈框架该有的东西,Cormi 基本都有。但 API 的形态不同——umi 的插件 API 在 Cormi 里是服务上的注册方法和类型化事件,umi 的配置文件在这里是插件树。

概念 ​

umiCormi
.umirc.ts / config/config.tscormi.yml:插件树,每个插件带自己的配置
plugins: [...] + enableBy: config在 cormi.yml 中列出插件,或设置 disabled: true
插件 API 的阶段(onStart、modifyConfig……)没有阶段:服务在注册变化时重新计算产物
api.restartServer()不需要:修改配置只重载对应的插件
src/app.ts 的运行时配置 keysrc/app.tsx 是一个浏览器插件:ctx.wrap()、ctx.on()
.umi 临时目录src/.cormi,由 ctx.app.file() 维护

插件 API ​

umiCormi
api.describe({ key, config })export const name + export const Config(Schema)
api.addHTMLMetas / addHTMLLinks / addHTMLScriptsctx.html.head(tag) / ctx.html.body(tag)
api.modifyHTMLctx.html.transform(fn)
api.addRuntimePlugin + 运行时 keyctx.app.entry(module, config),浏览器端用 ctx.wrap() 与事件
api.addEntryImportsctx.app.import(source)
api.writeTmpFilectx.app.file(path, content)
api.modifyRoutesctx.router.patch(fn)
api.addLayoutsctx.router.layout(file)
api.modifyViteConfigctx.vite.configure(fn) / ctx.vite.plugin(plugin)
api.addMiddlewaresctx.server.use(mw) / ctx.server.get(path, mw)
api.onBuildCompletectx.on('build/after', fn)
api.registerCommandctx.cli.command(name, command)
api.registerGeneratorctx.cli.generator(type, generator)
api.applyPlugins({ key })在自己的事件上 ctx.emit / ctx.serial / ctx.waterfall

配置项 ​

umiCormi(@cormijs/preset 的配置,构建项在 @cormijs/vite 上;用 @cormijs/preset-react 时写在一起)
routesroutes
base、publicPath、history.typebase、publicPath、history
ssrssr
title、metas、links、scripts、headScripts、styles、favicons同名
alias、define、targets、outputPathalias、define、targets、outDir
proxyproxy
mock@cormijs/plugin-mock
exportStatic@cormijs/plugin-export-static
mpa@cormijs/plugin-mpa
legacy@cormijs/plugin-legacy
model、initialState、request、antd、layout、qiankun、dva、valtio、reactQuery、analytics、tailwindcss同名的官方插件

覆盖情况 ​

已覆盖:约定式与配置式路由、全局布局、404、clientLoader 与服务端 loader、SSR、API 路由、mock、proxy;HTML 配置;base、publicPath、history、alias、define、targets;global、overrides、loading、favicon 约定;路由预加载;exportStatic、MPA、legacy;dev、build、preview、setup、generate、config、lint 命令;以及 antd、tailwindcss、unocss、styled-components、model、initial-state、dva、valtio、react-query、request、layout、analytics、qiankun、mf 插件。umi 没有内置的联邦应用(federation)也已提供。

尚未覆盖:access 与 locale 插件。mfsu 这类与某个打包器深度绑定的功能有意不做;打包器可选 Vite 或 Rsbuild,见 打包器与 UI 框架。

以 MIT 许可发布 · 基于 Cordis 4、React 19 与 Vite 7