手写一个 koa-ts-cli 脚手架

一、koa-ts-cli

最近把公司的 nodejs koa 后端项目用 ts 重构一遍。javascript

在搭建整个工程,好比集成 koa、typescript、jest 以及 eslint 的过程当中,仍是会遇到挺多配置性的问题的。前端

考虑到工程的复用性,我写了一个 koa-ts-cli 脚手架,而且提供了三个工程模板:基本模板(koa-ts-base-template)、完整模板(koa-ts-full-template)、全栈模板(koa-ts-full-stack-template)。java

npm i -g koa-ts-cli
koats create myProject
 # Choose your favorite template.
 
 cd myProject
 npm install
复制代码

github 地址:github.com/SimpleCodeC…node

npm 包地址:www.npmjs.com/package/koa…mysql

注意:不一样模板的运行方式可能略有不一样,具体能够看各个模板的文档git

二、模板的选择(Templates)

koats 提供了三个基于 ts 的模板。github

  • koa-ts-base-templatesql

    这是一个干净的 koa + ts + jest + eslint + apidoc + docker 工程模板,实现了最基本的 koa 中间件和配置等,若是你只须要一个基本的 koa + ts 工程配置,这个模板适合你。docker

    模板地址: github.com/SimpleCodeC…typescript

  • koa-ts-full-template

    这是一个比较完整的 koa + ts 工程结构,在 koa-ts-base-template 的基础上,增长了以下功能:

    1. 集成了 mysql 数据库
    2. 支持不一样的开发环境配置: 开发环境(development)、正式环境(production)、测试环境(testing)
    3. 定义了统一的接口响应规范
    4. 定义了统一接口出错处理的中间件

    模板地址: github.com/SimpleCodeC…

  • koa-ts-full-stack-template

    这是一个全栈的 koa + ts 工程结构,在 koa-ts-full-template 的基础上,修改了一些工程配置,从而实现多工程的编译。

    此工程包含三个端:

    • client:用于放前端代码
    • server:用于放后端代码
    • common:用于放前端和后端公共的代码,好比每一个接口的参数类型、以及每一个接口的响应类型

    模板地址: github.com/SimpleCodeC…

三、共同特色

这三个模板的共同特色:

koa v2

Typescript

Jest

APIDOC

Docker

Eslint

Husky

四、安装 koa-ts-cli

npm i -g koa-ts-cli
复制代码

五、建立项目

koats create myProject
 # Choose your favorite template.
 
 cd myProject
 npm install
复制代码

六、开发模式

cd myProject
 npm run dev
复制代码

注意:不一样模板的运行方式可能略有不一样,具体能够看各个模板的文档

七、发布模式

npm run build
 cd myProject/dist
 npm run prod
复制代码

注意:不一样模板的运行方式可能略有不一样,具体能够看各个模板的文档

八、在 docker 下运行

cd myProject
 npm install
 npm run build
 sudo docker build -t koa-ts-api-server .
 sudo docker run -it --name koa-ts-api-server -p 8080:8080 koa-ts-api-server
复制代码

九、运行测试用例

cd myProject
 npm run test
复制代码

十、感谢

若是有遇到问题,欢迎来提 issue!

若是此脚手架对您的工做、学习或者爬坑有帮助,请动动您的小手,给个 Star,Thanks!

github 地址:github.com/SimpleCodeC…

npm 包地址:www.npmjs.com/package/koa…

相关文章
相关标签/搜索