Midway CLI
由于 CLI 底层能力都来源于社区现有的模块功能,为了减少过渡封装带来的维护成本和理解成本,CLI 中的各项功能都将逐步变为社区现有的模块,同时 CLI 库将停止继续迭代。
为此后续的变化为
- 开发将从
midway-bin dev
变为mwtsc
- 编译将从
midway-bin build
变为tsc
- 测试将从
midway-bin test
变为mocha
或者jest
- 覆盖率将从
midway-bin cov
变为jest --coverage
或者其他类似指令
@midwayjs/cli
是新版本的 Midway 体系工具链,和 Serverless,以及原应用的工具链进行了整合。
基础入口
@midwayjs/cli
提供了两个入口命令。 midway-bin
和 mw
命令。
当 @midwayjs/cli
安装到全局时,一般使用 mw
命令,比如 mw dev
。当安装到项 目中,做 cli 工具时,我们一般使用 midway-bin
命令,但是请记住,这两个命令是相同的。
dev 命令
以当前目录启动本地开发命令。
$ mw dev
--baseDir 应用目录,一般为 package.json 所在文件夹,默认为 process.cwd()
--sourceDir ts代码目录,默认会自动分析
-p, --port dev侦听的端口,默认为 7001
--ts TS模式运行代码
--fast 极速模式
--framework 指定框架,默认会自动分析
-f, --entryFile 指定使用入口文件来启动 bootstrap.js
--watchFile 更多的文件或文件夹修改侦听
--notWatch 代码变化时不自动重启
标准启动
$ midway-bin dev --ts
修改启动端口
针对 HTTP 场景, -p
或者 --port
可以临时修改端口。
$ midway-bin dev --ts --port=7002
修改启动路径
指定应用根目录,一般为 package.json 所在文件夹,默认为 process.cwd()
$ midway-bin dev --ts --baseDir=./app
修改ts源码路径
指定ts代码目录,默认会自动分析
$ midway-bin dev --ts --sourceDir=./app/src
修改 tsconfig.json 的位置
通过设置 TS_NODE_PROJECT 环境变量来指定tsconfig.json的位置。
$ cross-env TS_NODE_PROJECT=./tsconfig.dev.json midway-bin dev -ts
更快的启动方式
默认的启动方式为 ts-node,在文件数量特别多的情况下会比较慢,可以切换为 swc 等新的编译方式。
// 使用 ts-node 的快速dev模式
$ midway-bin dev --ts --fast
// 使用 swc 的快速dev模式
$ midway-bin dev --ts --fast=swc
监听文件变化
--watchFile
用于指定更多的文件或文件夹修改侦听,默认侦听 sourceDir
目录中 .ts
、.yml
和 .json
结尾的文件(可通过 --watchExt 参数指定更多扩展名),以及 baseDir
目录中的 f.yml
文件
// 指定多个文件,使用英文逗号分隔
$ midway-bin dev --ts --watchFile=./a.txt,./b.txt
// 指定多个文件夹和文件,使用英文逗号分隔
$ midway-bin dev --ts --watchFile=./test,./b.txt
--watchExt
:指定更多的侦听文件扩展名,默认为.ts
、.yml
和.json
// 指定多个文件扩展名,使用英文逗号分隔
$ midway-bin dev --ts --watchExt=.js,.html
本地单步Debug调试
--debug
参数启动 debug 模式,可以通过 chrome devtools
进行单步代码调试:
您可以通过 chrome://inspect/
打开 nodejs devtools
进行断点调试:
您也可以直接通过 chrome 浏览器打开命令行中输出的 devtools
协议的链接,给对应代码添加断点后调试:
如果您使用 vscode
,那么您可以使用 vscode 的 js debug terminal,在其中执行 dev 命令(无需添加 --debug
参数)启动就可以打断点调试了。
test 命令
以当前目录启动测试,默认使用 jest 工具,可以使用 --mocha 参数指定使用 mocha。
$ midway-bin test --ts
-c, --cov 获取代码测试覆盖率
-f, --file 指定测试文件,例如 ./test/index.test.ts
--ts TS模式运行单测
--forceExit jest forceExit
--runInBand jest runInBand
-w, --watch watch模式
--mocha 使用 mocha 进行单测
使用 mocha 进行单测时,需要手动安装 mocha
和 @types/mocha
两个依赖到 devDependencies
中:npm i mocha @types/mocha -D
。