手写一个 koa-ts-cli 脚手架(中文版)

发布 : 2019-11-17 分类 : nodejs 浏览 :

1、koa-ts-cli

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

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

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

1
2
3
4
5
6
npm i -g koa-ts-cli
koats create myProject
# Choose your favorite template.

cd myProject
npm install

github 地址:https://github.com/SimpleCodeCX/koa-ts-cli

npm 包地址:https://www.npmjs.com/package/koa-ts-cli

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

2、模板的选择(Templates)

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

  • koa-ts-base-template

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

    模板地址: https://github.com/SimpleCodeCX/koa-ts-base-template

  • koa-ts-full-template

    这是一个比较完整的 koa + ts 工程结构,在 koa-ts-base-template 的基础上,增加了如下功能:
    1) 集成了 mysql 数据库
    2) 支持不同的开发环境配置: 开发环境(development)、正式环境(production)、测试环境(testing)
    3) 定义了统一的接口响应规范
    4) 定义了统一接口出错处理的中间件

模板地址: https://github.com/SimpleCodeCX/koa-ts-full-template

  • koa-ts-full-stack-template

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

    此工程包含三个端:

3、共同特点

这三个模板的共同特点:

koa v2

Typescript

Jest

APIDOC

Docker

Eslint

Husky

4、安装 koa-ts-cli

1
npm i -g koa-ts-cli

5、创建项目

1
2
3
4
5
koats create myProject
# Choose your favorite template.

cd myProject
npm install

6、开发模式

1
2
cd myProject
npm run dev

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

7、发布模式

1
2
3
npm run build
cd myProject/dist
npm run prod

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

8、在 docker 下运行

1
2
3
4
5
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

9、运行测试用例

1
2
cd myProject
npm run test

10、感谢

如果有遇到问题,欢迎来提 issue!

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

github 地址:https://github.com/SimpleCodeCX/koa-ts-cli

npm 包地址:https://www.npmjs.com/package/koa-ts-cli

本文作者 : Simple
原文链接 : https://simplecodecx.github.io/blog/20191117/d0893a5d.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹