使用nodejs + koa + typescript 集成和自動重啟的問題

版本說明

Node.js: 16.13.1

創建項目

創建如下目錄結構

project
├── src
│   └── server.ts
├── package.json
└── tsconfig.json

package.json 可以使用 yarn init -y 生成
tsconfig.json 可以使用 tsc --init 生成(需要全局或在項目中安裝 typescript 包才可以使用 tsc 命令)

安裝依賴

註意:

  • @tsconfig/node16 包需要根據 Node.js 的版本變化,我電腦上安裝的是 16.x.x 的版本,所以用的是 @tsconfig/node16,具體看 tsconfig/bases 中的說明,當然也可以完全不用安裝這個包,這個包優點是公用性和主流推薦配置
  • typescript 如果已經全局安裝過瞭,就從下面的命令中移除它
  • concurrently 是一個並發執行多個命令的工具包
  • nodemon 是一個監聽文件變化自動重啟程序的工具包
yarn add koa
yarn add typescript @tsconfig/node16 @types/node @types/koa concurrently nodemon -D

填充內容

src/server.ts

import Koa from 'koa';

const server: Koa = new Koa();
const port: number = 3000;

server.use((ctx: Koa.DefaultContext) => {
    ctx.body = 'hi koa';
});

server.listen(port, () => {
    console.log(`Node.js v${process.versions.node}`);
});

tsconfig.json

註意:extends 字段的值根據你安裝的包名 @tsconfig/node** 替換

{
  "extends": "@tsconfig/node16/tsconfig.json",
  "compilerOptions": {
    "baseUrl": ".",
    "rootDir": "src",
    "outDir": "dist",
    "noImplicitAny": true,
  },
  "include": [
    "src/**/*"
  ]
}

package.json

"scripts": {
  "build-ts": "tsc",
  "build": "yarn build-ts",
  "debug": "yarn build && yarn watch-debug",
  "serve-debug": "nodemon --inspect dist/server.js",
  "serve": "node dist/server.js",
  "start": "yarn serve",
  "watch-debug": "concurrently -k -p \"[{name}]\" -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold,green.bold\" \"npm:watch-ts\" \"npm:serve-debug\"",
  "watch-node": "nodemon dist/server.js",
  "watch-ts": "tsc -w",
  "watch": "concurrently -k -p \"[{name}]\" -n \"TypeScript,Node\" -c \"yellow.bold,cyan.bold,green.bold\" \"npm:watch-ts\" \"npm:watch-node\""
}

運行

我們的所有源碼在 src 目錄下,tsc 編譯後的 js 文件在 dist 目錄下,這是在 tsconfig.json 文件中指定的路徑

本地開發:如果沒有 dist 目錄需要先執行 yarn build 去編譯生成,然後再執行 yarn watch

部署生產:順序執行 yarn buildyarn serveyarn start(serve 和 start 是相同的命令)

參考資料

microsoft/TypeScript-Node-Starter

到此這篇關於nodejs + koa + typescript 集成和自動重啟的文章就介紹到這瞭,更多相關nodejs  koa  typescript內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: