跳到主要内容
版本:4.0.0 🚧

脚手架

Midway 编写了 create-midway 包,通过 npx 命令,可以方便的使用 npm init midway 命令创建脚手架。

$ npm init midway@latest -y
提示

如果不加 @latest 的 tag,可能不会更新到最新版本。

通过 CLI 创建脚手架

默认行为

不传递参数,可以列出当前最常用的模版列表。

比如执行

$ npm init midway@latest -y

则会输出

➜  ~ npm init midway
? Hello, traveller.
Which template do you like? …

⊙ v3
❯ koa-v3 - A web application boilerplate with midway v3(koa)
egg-v3 - A web application boilerplate with midway v3(egg 2.0)
faas-v3 - A serverless application boilerplate with midway v3(faas)
component-v3 - A midway component boilerplate for v3
quick-start - A midway quickstart exmaple for v3

⊙ v3-esm
koa-v3-esm - A web application boilerplate with midway v3(koa)

⊙ v2
web - A web application boilerplate with midway and Egg.js
koa - A web application boilerplate with midway and koa

该模式下,会根据用户选择,按照指引创建模版。

关于参数传递

由于 npm init midway 等价与 npm exec create-midway,根据不同的 npm 版本,传递参数 的格式不同。

比如在最新的 npm 中,使用额外的 -- 传递参数。

比如

$ npm init midway -- -h

-h 参数可以显式所有的可用选项。

下面所有的参数示例,都将以这个模式展示。

显式所有模版

非当前版本的模版,会默认隐藏,可以通过 -a 参数展示所有内置的模版。

$ npm init midway -- -a

指定模版名

每个模版都有一个模版名和模版描述,比如 koa-v3 - A web application boilerplate with midway v3(koa) 的模板名为 koa-v3

可以通过 --type 参数指定模板名。

$ npm init midway -- --type=koa-v3

指定模版包名

当自定义模版在 npm 上发布时,我们可以使用 -t 或者 --template 来指定包名。

$ npm init midway -- -t=custom-template

如果包还在本地开发,也可以指定一个相对路径或者绝对路径。

$ npm init midway -- -t=./custom-template

指定创建目标目录

通过 --target 参数可以指定创建的目录,必须和 type 或者 template 参数一同使用。

比如,下面的命令指定了 koa-v3 模版,将其生成到当前 abc 目录下,如果目录不存在,则会新建。

$ npm init midway -- --type=koa-v3 --target=abc

一般 target 可以省略,把路径放到最后一个参数即可。

$ npm init midway -- --type=koa-v3 abc

指定客户端

如果有私有客户端,可以使用 --npm 指定客户端。

$ npm init midway -- --npm=tnpm

指定源

如果有私有源,可以使用 --registry 指定私有源。

$ npm init midway -- --registry=https://registry.npmmirror.com

脚手架参数

如果脚手架中包含用户可传递的参数,也可以通过命令行传递。

$ npm init midway -- --bbb=ccc

如果参数名和工具的参数重复了,可以使用 t_ 的参数,在工具传递给脚手架时,会自动处理。

$ npm init midway -- --type=koa-v3 --t_type=ccc

编写脚手架

Midway 脚手架使用了自研的 light-generator 工具,具体的使用可以参考 https://github.com/midwayjs/light-generator

也可以参考 Midway 自己的 模版工程