Express.jsとTypeScriptの開発環境構築

Express

完成物のgithub

クローンして npm installを流せばすぐ使えます!

GitHub - shinsaku-sasaki/Express-TypeScript: Express(TypeScript)のサンプル
Express(TypeScript)のサンプル. Contribute to shinsaku-sasaki/Express-TypeScript development by creating an account on GitHub.

作成手順

ターミナルを開き、作業ディレクトリを作成して移動します。(名前はなんでもOKです!)

mkdir ExpressTs
cd ExpressTs

次に、package.jsonを作成します。

npm init -y

Expressのセットアップ

expressをインストールします。

npm install express

node_modules、package-lock.jsonが追加で作成されました。

git管理している場合、.gitignoreを作成しnode_modulesを管理から外しておきます。

touch .gitignore
echo node_modules >> .gitignore

次に、app.jsを作成します。一旦JavaScriptファイルで確認します。

touch app.js
const express = require("express");
const app = express();
const port = 3000;

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

アプリを起動し、http://localhost:3000/にアクセスします。

node app.js

このように起動できていればOKです!

TypeScriptのセットアップ

TypeScriptと型定義ファイルをインストールします。

npm i -D typescript @types/node @types/express

tsconfig.jsonを作成します。

npx tsc --init

作成されるとターミナルにはこのように表示されます↓

app.jsをapp.tsに変更します。

また、1行目はrequiredではなく、importにします。

import express from "express";
const app = express();
const port = 3000;

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`);
});

修正ごとにコンパイルしたjsを実行するのは開発効率が悪いので、ts-nodeを入れてtsを実行するような形にします。

npm i -D ts-node

実行します↓

npx ts-node app.ts

http://localhost:3000/ でHELLO WORLDが立ち上がればOKです。

nodemonで変更検知

nodemonを使って、ファイルの変更を検知して自動でコンパイルされるようにします。

変更ごとに毎回 npx ts-node app.tsを打つのは面倒です💦

npm i -D nodemon

起動します。

npx nodemon app.ts

この状態で、app.tsを変更すると自動で再起動されます。

起動コマンドはnpm scriptsに追加しておきましょう。

{
  "name": "expressts",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev":"npx nodemon app.ts"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.18.2"
  },
  "devDependencies": {
    "@types/express": "^4.17.21",
    "@types/node": "^20.11.0",
    "nodemon": "^3.0.2",
    "ts-node": "^10.9.2",
    "typescript": "^5.3.3"
  }
}

これで、

npm run dev

で起動できるようになりました🙌