手寫一個 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…

相關文章
相關標籤/搜索