Nest(TypeScript)で遊んでみる 〜プロジェクト作成編〜
Posted on September 08, 2018 at 23:00 (JST)
NestはNode.jsで起動するWebアプリケーション作成用のフレームワークである。
Angularに強い影響を受けており、TypeScriptを用いて開発することができる。
今回は下記4点を実施した。
- nest cliを用いてプロジェクトを生成する
- Hot reloadを用いて修正を即反映させる
- 本番用にビルドする
- 環境変数を使用する
作成したコード [ nest-angular-sample: works/01_init_nest ]
動作環境
OS: macOS High Sierra ver. 10.13.4
Nodejs: v8.10.0
npm: 5.6.0
nest: 5.4.0
1. nest cliを用いてプロジェクトを生成する
cliをインストールし、project-nameを指定して作成。
$ npm i -g @nestjs/cli
$ nest new project-name
description、version、authorを聞かれるが未入力でEnterでもOK。
その後、npmとyarnどちらを使うか選択する。(今回はnpmを選択)
下記のディレクトリ構成でプロジェクトが作成される。
project-name
|-- README.md
|-- node_modules
|-- nodemon-debug.json
|-- nodemon.json
|-- package-lock.json
|-- package.json
|-- src
| |── app.controller.spec.ts
| |── app.controller.ts
| |── app.module.ts
| |── app.service.ts
| |── main.hmr.ts
| └── main.ts
|-- test
| |── app.e2e-spec.ts
| └── jest-e2e.json
|-- tsconfig.json
|-- tsconfig.spec.json
|-- tslint.json
└── webpack.config.js
2. Hot reload(HMR)で修正を即反映させる
下記を実行する。(コンソールを2画面使用する)
$ npm run webpack
$ npm run start:hmr
3. 本番用にビルドする
下記コマンドによりビルド実行+本番モードでアプリケーションが起動する。
ビルド成果物は dist
ディレクトリの中に出力される。
$ npm run start:prod
なお、ビルドのみ行う場合は下記コマンドを実行する。
$ npm run prestart:prod
4. 環境変数を使用する
process.env
から環境変数を取得して利用できる。
例) main.jsで起動するポート番号を環境変数経由で指定
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.HTTP_PORT || 3000);
}
bootstrap();
環境変数は.bash_profileなどに設定するか、起動時に引数として設定できる。
例) 本番モードでの起動時に指定
$ HTTP_PORT=3001 node dist/main.js
以上。