KoaJS+TypeScriptの環境を作る
KoaJSを始めました。TypeScriptの環境を作ってみました。
NodeJS+TypeScriptのセットアップ
まっさらな状態から環境を作ってみます。
前提として、NodeJSはインストールされているものとします。
※NodeJSのバージョンについては、最後の方の「追記」を参照してください。
$ mkdir app1 $ cd app1 $ npm init
TypeScriptのセットアップを行います:
$ npm install --save-dev typescript ts-node $ mkdir src
ts-nodeは、NodeJSの環境でTypeScriptを直接実行できるようにするツールです。
次に、TypeScriptのコンパイル設定を行うために、以下のページからtsconfig.json
をコピーします:
$ wget https://raw.githubusercontent.com/Microsoft/TypeScript-Node-Starter/master/tsconfig.json
この設定では、src
にTypeScriptのソースを入れ、dist
にトランスパイル後のJavaScriptファイルが入ります。
そして、package.json
に実行とビルドを行うコマンドを設定します:
{ ..... "scripts": { "start": "ts-node src/server.ts", "build": "tsc", .....
試しに、適当な内容でsrc/server.ts
を作ってみます:
// src/server.ts console.log("Hello, World!");
これで実行してみます:
$ npm start
.....
Hello, World!
ビルドしてみます:
$ npm run build
生成されたJSファイルを実行します:
$ node dist/server.js Hello, World!
これでNodeJS+TypeScriptの最低限の実行環境が出来上がりました。
Koaのセットアップ
Koaをインストールします:
$ npm i -S koa $ npm i -D @types/koa
動作を確認するために、src/server.ts
を以下のように書き換えます:
import * as Koa from 'koa'; const app = new Koa(); app.use((ctx: Koa.Context) => { ctx.body = 'Hello, Koa!'; }); app.listen(3000);
http://localhost:3000/を開き、「Hello, Koa!」と表示されればOKです。
参考情報
以下のリポジトリが参考になりました。git clone
してそのまま使ってもいいかもしれません。
あと、NodeJS+TypeScriptだと、MSのサンプルが参考になります:
あとがき
ここ数日間、NodeJSのフレームワークを探し回っていましたが、Koaはかなり良さそうに思います。
さらに調べてみたいと思います。
追記1:ライブリローディング
この記事では最低限のセットアップ方法だけを書きましたが、ライブリローディング(ソースコードを変更すると自動的に再読み込み)の方法を追記しておきます。
ライブリローディングにはnodemonを使います。
$ npm i -D nodemon
nodemon.json
ファイルを作成して、以下の設定を入れます:
{ "verbose": true, "exec": "ts-node ./src/server.ts", "watch": [ "src/" ], "env": { "NODE_ENV": "development" }, "ext": "ts json" }
package.json
のstart
の値をnodemon
に変更します:
{ ..... "scripts": { "start": "nodemon", .....
これでnpm start
で実行すると、ライブリローディングが効くようになります。
追記2:NodeJSのバージョン
Koaのページには、NodeJS v7.6.0以上が必須と書かれています(現時点で)。
これはES2015やasyncなどの機能を使うためですが、TypeScriptにはその機能が含まれているので、上記のバージョンよりも古いものでも大丈夫なはずです。
僕の環境ではv6.11.1を使い、asyncが動作することは確認しました。
ただ、万が一エラーが出る場合は、バージョンを合わせる必要があるかもしれません。