💬
Fastify+Typescriptの環境構築をしてPINGをたたくまで
Fastifyのリファレンスを参考にしながら環境構築を行う。
- 環境構築
npm init -y
npm i fastify
npm i -D typescript @types/node ts-node-dev
公式で記載されているパッケージの他、開発用にts-node-dev
を導入する。
- スクリプトの書き換え
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:開発用のサーバーの起動。ファイルの変更を検知してリロードしてくれる。
-
tsconfig.json
の作成+書き換え
npx tsc --init
ビルドの結果がファイルと同じ場所に出力されると、ソース管理が面倒なため、
tsconfig.jsonを以下のように変更する。
tsconfig.json
"outDir": "./dist",
-
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}`)
})
- ビルド → サーバーの起動 → 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