今回はNode.js + TypeScriptにおける実行環境をnpmを用いて構築する手順を備忘録としてまとめていきます。
本格的に実装していくための準備として、必要最低限のファイルを作成します。
開発環境
- Node.js:
v18.19.1
- npm:
v10.2.4
- TypeScript:
v5.4.2
構築の流れ
package.jsonやtsconfig.jsonの設定ファイルを自動生成
Node.jsをTypeScriptで実装するために必要なライブラリをインストール
step1で生成した各種設定ファイルに対して設定を変更・追加・削除等を実施
処理内容が書かれた実行ファイルを作成し、実際の処理を実装
※ 今回はログ出力のみ
実行ファイルをビルドし、処理を実行
もしNode.jsのインストールがまだであれば下記の記事を参考にしてください
初期化コマンドの実行
package.json
を生成するためのコマンドを実行
$ npm init --yes
--yes
を引数に付与すると、各質問に回答せずにpackage.jsonファイルが生成される
公式Doc
ライブラリのインストール
Node.jsをTypeScriptで実装・実行するために必要な下記3つのライブラリをインストール
typescript
:Node.jsをTypeScriptで実装するための静的型付け言語の基本的なライブラリ@types/node@16
:TypeScriptのためのNode.jsの型情報を提供するライブラリts-node
:TypeScriptファイルをJavaScriptにコンパイルし、Node.js上で実行するためのツール
$ npm install --save-dev typescript @types/node@18 ts-node
--save-dev
引数を付けることでdevDependenciesセクションに追加される。
開発環境でしか使用しない場合は、基本的にこのオプションを付ける
設定ファイルの実装
tsconfig.json
ファイルを生成し、以下のように設定を追加します。
$ npx tsc --init
設定ファイルに関しては必要最低限の設定を実装します。
tsconfig.json
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "./dist",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
},
"include": ["./src/**/*.ts"]
}
package.json
{
"name": "node_sample",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"build": "npx tsc",
"build:watch": "npx tsc --watch"
},
"repository": {
"type": "git",
"url": "git+https://github.com/gorida/node_sample.git"
},
"license": "ISC",
"devDependencies": {
"@types/node": "^18.19.22",
"ts-node": "^10.9.2",
"typescript": "^5.4.2"
}
}
.gitignore
node_modules
dist
実行ファイルの実装
ファイルが実行できたことを確認できればいいので、一旦ログ出力のみを実装
拡張子に.ts
がついたファイルを作成し、一旦ログ出力用のコードを追加
この後ビルドすることでjsファイルへコンパイルされ、Node.jsの実行環境でファイルが実行できるようになる
index.ts
console.log('Hello World!!');
簡単ですが、実装は以上。
ビルド実行&動作確認
ビルド実行
package.json
に定義したscripts
の一つであるbuild
を実行する
実際のコマンドの中身はnpx tsc
を実行している
ビルドが成功するとルート直下にdist/
ディレクトリが生成され、その中にコンパイルされたindex.js
が格納されている。そして、そのファイルをnode
コマンドで実行
$ npm run build
> node_sample@1.0.0 build
> npx tsc
$ node dist/index.js
Hello World!!
無事に「Hello World」と出力されたことを確認できました
ちなみにts-nodeを使うと直接ts
ファイルを実行することも可能
$ npx ts-node src/index.ts
Hello World!!
最終的なディレクトリ構成
.
├── node_modules
├── dist
│ └── index.js
├── src
│ └── index.ts
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json
テンプレートリポジトリとして使用
Node.js & TypeScriptのプロジェクトを毎回一から作成するのが面倒なので、Github上でテンプレートリポジトリとして設定することが可能です。
具体的には以下の手順となります。
- 対象リポジトリの「Settings」→「Template repository」にチェックを入れる
- 新しいリポジトリを作成する際に「Repository template」より対象のリポジトリを選択
これで毎回一から作成することなく、テンプレートを用いて効率よく開発が始められます。
まとめ
今回はNode.js上でTypeScriptで実装した処理を実行するための手順を整理してみました。
作成したリポジトリをテンプレートとして流用可能となりますので、どんどん使っていければと思います。