アレについて記す

Nest(TypeScript)で遊んでみる 〜プロジェクト作成編〜

Posted on September 08, 2018 at 23:00 (JST)

NestはNode.jsで起動するWebアプリケーション作成用のフレームワークである。
Angularに強い影響を受けており、TypeScriptを用いて開発することができる。

今回は下記4点を実施した。

  1. nest cliを用いてプロジェクトを生成する
  2. Hot reloadを用いて修正を即反映させる
  3. 本番用にビルドする
  4. 環境変数を使用する

作成したコード [ 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

以上。


参考URL