💬

Fastify+Typescriptの環境構築をしてPINGをたたくまで

2023/12/03に公開

Fastifyのリファレンスを参考にしながら環境構築を行う。
https://fastify.dev/docs/latest/Reference/TypeScript/

  1. 環境構築
npm init -y
npm i fastify
npm i -D typescript @types/node ts-node-dev

公式で記載されているパッケージの他、開発用にts-node-devを導入する。

https://www.npmjs.com/package/ts-node-dev

  1. スクリプトの書き換え

package.jsonのscriptsを以下に書き換える。
ビルドの結果はdist配下に出力するようにする。

  "scripts": {
    "build": "tsc -p tsconfig.json",
    "start": "node dist/index",
    "start:dev": "ts-node-dev src/index"
  }
  • build:ビルド。(~.ts~.js)
  • start:サーバーの起動。
  • start:dev:開発用のサーバーの起動。ファイルの変更を検知してリロードしてくれる。
  1. tsconfig.jsonの作成+書き換え
npx tsc --init

ビルドの結果がファイルと同じ場所に出力されると、ソース管理が面倒なため、
tsconfig.jsonを以下のように変更する。

tsconfig.json
"outDir": "./dist",
  1. index.tsの作成
index.ts
import fastify from 'fastify'

const server = fastify()

server.get('/ping', async (request, reply) => {
  return 'pong\n'
})

server.listen({ port: 8080 }, (err, address) => {
  if (err) {
    console.error(err)
    process.exit(1)
  }
  console.log(`Server listening at ${address}`)
})
  1. ビルド → サーバーの起動 → ping
npm run build
npm run start

または

npm run start:dev

ビルドの必要がないので開発中はnpm run start:devを使用する。

curl localhost:8080/ping

pongが返却されたら終了。

最終的なツリー構成は以下のようになる。

.
├── src
│   └── index.ts
├── package-lock.json
├── package.json
└── tsconfig.json

Discussion