从 Midway v1 升级到 v2
手动迁移步骤
1、midway 版本修改
将原来的 midway
依赖替换为下列依赖。
"dependencies": {
"@midwayjs/bootstrap": "^2.3.0",
"@midwayjs/decorator": "^2.3.0",
"@midwayjs/web": "^2.3.0",
"midway": "^2.3.0"
},
信息
midway
库为 v1 的兼容导出包。
2、开发期依赖修改
**@midwayjs/mock**
2.x 本地开发的测试库**@types/jest**
2.x 将 mocha 升级为了 jest,这是 jest 定义库@types/node
node 定义库,如有,可以升级cross-env
跨平台的代码执行库,如有,可升级@midwayjs/egg-ts-helper
,egg 定义生成工具,2.x 新加@midwayjs/cli
2.x 将原来的 midway-bin 工具升级为了 @midwayjs/cli 工具,命令不变,依旧是 midway-binmwts
Midway 2.x lint 规则库typescript
ts 库,可升级
整体如下:
"devDependencies": {
"@midwayjs/mock": "^2.3.0",
"@types/jest": "^26.0.10",
"@types/node": "14",
"cross-env": "^6.0.0",
"@midwayjs/egg-ts-helper": "^1.0.1",
"@midwayjs/cli": "^1.0.0",
"mwts": "^1.0.5",
"typescript": "^3.9.0"
},
信息
注意,请移除 midway-bin 的包依赖。
脚本部分 基本只是调整了 lint 的部分,移除了 debug 命令。
"scripts": {
"start": "egg-scripts start --daemon --title=midway-server-midway_project --framework=midway",
"stop": "egg-scripts stop --title=midway-server-midway_project",
"start_build": "npm run build && cross-env NODE_ENV=development midway-bin dev",
"dev": "cross-env ets && cross-env NODE_ENV=local midway-bin dev --ts",
"test": "midway-bin test",
"cov": "midway-bin cov",
"lint": "mwts check",
"lint:fix": "mwts fix",
"ci": "npm run cov",
"build": "midway-bin build -c"
},
现在 debug 变成了每个命令的参数,你可以在 dev 或者其他命令时增加 --debug
参数来开启调试。
{
"debug": "cross-env ets && cross-env NODE_ENV=local midway-bin dev --ts --debug"
}
更多调试场景,请参考 调试文档。
3、src 代码的修改
- 暂无
4、测试代码的修改
Midway v2 版本开始,默认的单测框架将由 mocha 迁移至 jest。
方案
jest 提供了 codemod 工具用于快速迁移。
npx jest-codemods
手动修改
- jest 中,全局的方法为
beforeAll
,afterAll
,而 mocha 为before
和after
可选调整
Midway 代理 Egg 的定义变更(可选)
原有 Midway 代理了一部分 EggJS 定义,在新版本 Midway 中,提供了更为明确的定义,老的定义,我们依旧在 midway
这个包上进行兼容,但是我们希望新编写的代码逐步使用新的定义。
旧写法
import { Context, EggAppConfig, EggApplication, Service } from 'midway';