Skip to content
This repository has been archived by the owner on Aug 9, 2022. It is now read-only.

Releases: umijs/umi-next

v4.0.0-rc.16

12 May 07:11
Compare
Choose a tag to compare
v4.0.0-rc.16 Pre-release
Pre-release

新增 name 和 importSource 信息到 api.appData.umi
支持 command 配置 configResolveMode 为 loose,执行时不做 schema 校验
支持手动给 .umi 加 // debug 头部注释已避免文件被覆盖,通常在定义问题时使用
修复 umi config set 命令在某些边界场景不工作
修复从 umi import 的 history 不会自动补充 base 的问题
修复 runtimePublicPath 设置后 publicPath 为 undefined 的问题,fallback 到 /
max:@umijs/max/test 支持来自 max 自身 preset 提供的 alias
max:内置 tailwindcss 插件
test:esbuild 类型的 transformer 默认开启 sourcemap
test:新增 js 和 jsx 也走 transform 编译
generate:优化错误提示
plugin-antd:修复通过三方插件用 api.modifyDefaultConfig 不生效的问题,改用 process.env.UMI_PLUGIN_ANTD_ENABLE 环境变量
plugin-model:新增 models 跟进 useModel 的关系进行排序,被使用的在前
plugin-qiankun:提供 externalQiankun 配置,开启时不把 qiankun import 替换为绝对路径
plugin-qiankun:修复 base 和 path match 问题
plugin-qiankun:model 文件的生成应该在 model 插件之前
plugin-request:修复所有请求都会走到 errorConfig.errorThrower 的问题
plugin-docs:修复 Chrome 下带 hash 访问没有跳转到正确 scrollTop 的问题
plugin-docs:修复不支持 MFSU 的问题

v4.0.0-rc.15

05 May 07:09
Compare
Choose a tag to compare
v4.0.0-rc.15 Pre-release
Pre-release

新增 umi 导出 Navigate 接口
新增 vite 模式支持 https
调整 node 产物的 target,从 es2015 到 es2019
修复 create-umi 模板的 tsconfig.json 缺少 src 路径的问题
plugin-qiankun:修复 slave 应用不能动态修改 basename 的问题
plugin-model:修复由于 Provider 顺序导致的 useModel('@@initialstate') 时出错的问题
plugin-request:修复 RequestConfig 类型导出问题
plugin-docs:改进 mdx 编译器报错优化

v4.0.0-rc.14

28 Apr 06:29
Compare
Choose a tag to compare
v4.0.0-rc.14 Pre-release
Pre-release

Break Change:同时支持 React 18 和低版本 React,默认启用 React 18
Break Change:调整插件接口 api.onCheckCode 的参数,specifiers 的 value 有变更
改进 dev 启动后的 loading 动画
路由支持 wrappers 配置
路由配置支持 @/ 前缀
开启 https 时默认用 http/2
支持通过 MOCK=none 关闭 mock
支持配置 extraBabelIncludes 让额外的文件或依赖走 babel 编译
修复 MFSU 有 src 缓存但依赖构建失败时找不到 mf 模块的问题
修复 lint 规则,只针对 test 文件开启 jest 规则
修复配置 SOCKET_SERVER 后 ws server Host 不正确导致反复刷新的问题
修复 node 补丁方案中漏处理 process 的问题
plugin-layout:修复 layout 插件修改配置后不能热生效的问题
plugin-dva:支持 runtime 配置 dva,包含 onAction 和 onError
plugin-access:修复开启 access:{} 但无 access.ts 时的报错问题
plugin-access:修复 access 里 initialState 第一次拿是 undefined 的问题
plugin-docs:大量更新和优化
plugin-locale:新增 injectIntl 的导出
plugin-qiankun:新增 MicroApp 和 connectMaster 的导出

v4.0.0-rc.13

21 Apr 08:54
Compare
Choose a tag to compare
v4.0.0-rc.13 Pre-release
Pre-release

支持 Vue
支持 Node 18,但不支持 Node 17
新增 patchClientRoutes 的 runtime hook
路由组件 props 可访问 location、params、searchParams 和 route
npmClientCheck 基于检测安装产物检测,之前基于 process.env.npm_config_user_agent 环境变量
新增 api.onBuildHtmlComplete
onCheckCode 的报错体验优化
MFSU 新增 runtimePublicPath 的配置
修复 MFSU 有配置 publicPath 时,MF 资源访问失败的问题
修复 config.outputPath 是绝对路径时的产物路径问题
修复有 APP_ROOT 时 mfsu 缓存路径,会导致 OOM
修复 @fs 导致的 ts 类型问题,同时非 Vite 模式不再转换为 @fs 路径
修复 umi/client 的浏览器兼容问题(缺点是增加了产物大小,需进一步完善)
plugin-request:修复类型问题,同时删除默认的 errorHandler 实现
plugin-docs:支持代码高亮
plugin-docs:logo 和 rightNavComponents 支持配置 React 组件
plugin-docs:新增 themeSwitch 配置项,同时默认关闭黑白主题切换功能,配置开启

v4.0.0-rc.12

14 Apr 07:59
Compare
Choose a tag to compare
v4.0.0-rc.12 Pre-release
Pre-release

1、新增 umi preview 命令,用于产物预览和调试,支持 mock 和 proxy。

$ umi preview

2、新增 browser terminal 支持,可在浏览器往命令行里打日志

此功能复刻自 https://github.com/patak-dev/vite-plugin-terminal。

有些开发者会更希望在命令行里看到项目里通过 console 输出的日志,比如我。因为命令行日志不会随着刷新而失效,大家可能都经历过一些一闪而过的页面,想截屏都难;同时命令行日志还可以做物理存储,导出后可以方便他人排查。

开发者在项目中这么写,

import { terminal } from 'umi';
terminal.log(`Some info from the app`);
terminal.log({
  json: { foo: 'bar' },
});
terminal.info(`Hey terminal, A message from the browser`);
terminal.warn(`Watch out, warning from the browser`);
terminal.error(`Ups, testing an error message from the browser`);

然后就可以在命令行中看到日志,

3、max 内置 stylelint 和 eslint,执行 max lint 时无需手动安装

4、修复 mfsu cache invalidate 机制,减少不必要的依赖 rebuild

5、修复 mfsu 对于 exportsFields 的支持,比如 swiper/react 已可能正常使用

6、initial-state 插件删除默认的 Loading 文本

7、升级 babel、webpack、react-router、vite 和 esbuild 到最新

8、umi g 支持 api routes、mock 和 component

9、access 插件修复无权限且没有配置 fallback 时的渲染问题

v4.0.0-rc.11

07 Apr 09:06
Compare
Choose a tag to compare
v4.0.0-rc.11 Pre-release
Pre-release

1、新增命令 umi lint,包含 eslint 和 stylelint 的规则和命令

lint 有两种用法,1)仅使用 umi 提供的规则配置,然后用项目里安装的 eslint 和 stylelint 执行,好处是对 IDE 友好 2)使用 umi 的 lint 命令。

用法 1 是在 .eslintrc 和 .stylelintrc里扩展 umi 的配置,

{
  "extends": "umi/eslint"
}
{
  "extends": "umi/stylelint"
}

用法 2 是直接执行 umi lint 命令,默认会用前面的配置,当然也可通过配置文件进行修改。

同时,Umi 提供的 eslint 规则我们有进行梳理,目前仅包含质量类的规则,因为我们觉得,风格类的规则应该交给 prettier 或其他同类工具。

注:由于尺寸问题,umi 没有包含 @umijs/lint(@umijs/max 内置了),使用时会提示你手动安装。

2、支持通过环境变量 SOCKET_SERVER 指定 socket 服务器,场景是 umi.js 和页面 url 不是同一个 server 时使用,比如

# 指向 socket 服务器到本地 umi dev 启动的服务器
$ SOCKET_SERVER=http://localhost:8000/ umi dev

# 打开开发服务器,这个页面里引用 http://localhost:8000/umi.js
$ open http://dev.prod.domain/

3、支持 node: 前缀的 import 语法和补丁

越来越多的库使用 node: 前缀的 import,比如 chalk、file-type 等 sindresorhus 提供的依赖。之前会报 UnhandledSchemaError 的错误,现在通过 NormalModuleReplacementPlugin 替换资源 request 进行了修复。

import { join } from 'node:path';
join;

4、修复项目里指定 16 及以下版本的 react 时构建报错的问题

原因是,babel-preset-react 中的配置项 runtime 和 importSource 是要搭配使用的,比如 runtime 设置为 classic 而 importSource 设置为 react 时会报错。

// 如果 react >= 17
runtime: 'automatic',
importSource: 'react',

// 如果 react < 17
runtime: 'classic',
importSource: undefined,

v4.0.0-rc.10

31 Mar 09:09
Compare
Choose a tag to compare
v4.0.0-rc.10 Pre-release
Pre-release

1、umi dev 支持 https,通过 https: {} 配置开启,实现基于 mkcert,如果没有配 key 和 cert,Umi 会基于 Hosts 自动生成证书

https: {}

2、新增初版开发者工具,通过 /__umi/ 访问,目前支持 appData 和 config。日常排查问题时,很多 Umi 内部状态是看不到的,比如插件启用情况、appData 元数据、修改过的最终配置、修改过的最终路由、MFSU 的 module graph 信息等。如果有这些信息,对于问题排查会更有帮助。

image

3、mfsu 增加 cacheDependencies 检测,遇到 alias、externals、theme、publicPath、runtimePublicPath 等变更时自动让缓存失效。

4、删除 qiankun 插件中对于 runtimeHistory 的支持

5、修复 qiankun 插件,子应用支持 runtimePublicPath

6、修复 hash history 模式下,umi dev 返回 html 时路由匹配的机制问题

v4.0.0-rc.9

24 Mar 08:24
Compare
Choose a tag to compare
v4.0.0-rc.9 Pre-release
Pre-release

1、@umijs/max 的命令行从 umimax 更换为 max

# before
$ umimax

# after
$ max

2、umi cli 启动提速,从 5s+ 到 1s+

3、完善 mfsu,修复 hmr 不生效问题,以下是笔记

mfsu 模式下默认关闭了 fast refresh,因为有些兼容问题,原因未知,所以走的是 webpack 的 hmr https://github.com/umijs/umi-next/blob/9c8dc239ea05d03bcfc06b440e623cb020b7d26c/packages/bundler-webpack/src/config/fastRefreshPlugin.ts#L20

bundler-webpack/client/client/client.js 负责热更操作,之前这个文件也是被 mfsu 匹配的,但是里面包含 module.hot 的判断,打包之后会被写死为 false,导致 hmr 失效,始终走页面刷新,https://github.com/umijs/umi-next/blob/9c637aef5279c80f56155710f6bf45452158a6bf/packages/bundler-webpack/src/client/client.ts#L173

解法是让这个文件不走 mfsu 预编译,而是和项目文件一起打包。

4、完善 mfsu,修复一些边界场景报错之后的恢复问题,同时调整了日志,DX 会更好一些,应该不再需要手动删除 node_modules/.cache 的缓存文件

5、新增 mfsu.chainWebpack 配置

mfsu: {
  chainWebpack(memo) { memo.resolve.alias.set('foo', 'bar') }
}

chainWebpack 配置不会对 mfsu 场景下有效,所以新增 mfsu.chainWebpack 专门针对 mfsu 的 webpack 配置进行调整。

6、完善 mfsu,修复 app.ts 里无 export 内容时报错的问题

开启 mfsu 时,如果文件无 export 信息,会默认增加一个 export const __mfsu = 1,但最近测试时发现不需要了,原因应该是之前调整了 mfsu 的入口实现,webpack 会自动处理这个场景。解法是删除相应的 babel 插件,黑科技又少一个。

7、完善 access 插件,新增 Access 导出,同时支持路由通过 access 属性设置权限

import { Access } from 'umi';
routes: [
  { path: '/users', access: 'manager' }
]

8、umi 新增 verify-commit 命令,推荐打开 husky 使用

$ umi verify-commit

如果需要支持 emoji 前缀,可通过配置实现,

verifyCommit: {
  allowEmoji: true,
}

9、appData 新增 locale 信息,插件开发者可基于此分别输出中文和英文日志

10、proxy 中间件新增 x-real-url 属性,便于问题排查

11、修复 mock 文件不支持 cjs 的问题

12、修复使用 yarn 安装 umi 会失败的问题

13、支持 Umi 3 的多环境配置

$ UMI_ENV=cloud umi dev

v4.0.0-rc.8

17 Mar 09:25
Compare
Choose a tag to compare
v4.0.0-rc.8 Pre-release
Pre-release

1、修复 @umijs/bundler-vite 包文件缺失的问题

v4.0.0-rc.7

17 Mar 08:40
Compare
Choose a tag to compare
v4.0.0-rc.7 Pre-release
Pre-release

1、更名 @umijs/pro 为 @umijs/max,命令行也由 umipro 改为 umimax

2、完善 dva 插件,默认加入 dva-loading 插件,允许通过配置加入 dva-immer 插件,

export default {
  dva: {
    immer: {
      enableES5: true,
      enableAllPlugins: true,
    }
  }
}

3、umi 的 defineConfig 接口支持类型,和 Umi 3 保持一致

import { defineConfig } from 'umi';
export default defineConfig({ history: 'hash' });

4、完善 umi g page,默认行为和 Umi 3 保持一致,同时支持通过 --dir 参数切换为目录模式,

// 正常使用
$ umi g page index
// 包含子目录
$ umi g page foo/bar
// 目录模式,等同于 umi g page foo/index
$ umi g page foo --dir

5、更多 umi g 的功能快速开启,包括 dva、jest、tailwindcss、tsconfig.json 和 prettier,执行 umi g 即可看到,

$ npx umi g
? Pick generator type › - Use arrow-keys. Return to submit.
❯   Create Pages -- Create a umi page by page name
    Enable Prettier -- Setup Prettier Configurations
    Enable Typescript -- Setup tsconfig.json
    Enable Jest -- Setup Jest Configuration
    Enable Tailwind CSS -- Setup Tailwind CSS configuration
    Enable Dva -- Configuration, Dependencies, and Model Files for Dva

6、提取 bundler 之间的公共依赖到 bundler-utils,减少重复

7、修复 locale 插件不管有没有配置 locale: {} 都会开启的问题,同时修改内核,不允许插件注册时同时拥有 default 配置和配置开启模式,比如下方的插件写法会显示报错,

api.describe({
  config: { default: { foo: 1 } },
  enableBy: api.EnableBy.config,
});

8、修复 umi config set 在没有配置文件时会报错的问题,

$ umi config set npmClient pnpm

9、修复 onRouteChange 的执行时机和参数问题,和 Umi 3 保持一致,在页面初始加载时也会触发,

export function onRouteChange({ location }) {
  console.log('current url', location.href);
}

10、路由数据层增加 absPath 信息,表示当前路由的绝对路径,node 侧的插件层可用