🧕

【NestJS】REPLの便利な使い方TIPS

2024/07/05に公開

これはなに

NestJSのREPLの使い方について紹介します。

公式ドキュメント:https://docs.nestjs.com/recipes/repl

事前準備

公式ドキュメントに従ってrepl.tsを用意する。
ファイルが変更されたときにREPLにも反映されるようにしておく。

repl.ts
import { repl } from '@nestjs/core';
import { AppModule } from 'src/app.module';

async function bootstrap() {
  const replServer = await repl(AppModule);
  replServer.setupHistory('.nestjs_repl_history', (err) => {
    if (err) {
      console.error(err);
    }
  });
}
bootstrap();

使いやすいようにpackage.jsonscriptsに以下を追加しておく。

package.json
"scripts": {
  "repl": "nest start --watch --entryFile repl",
  // ...

以下のコマンドで起動できる。

$ npm run repl

NestJSのREPLの使い方

利用可能なcontrollerやproviderを表示する

debug()を使う。

> debug()

AppModule:
 - controllers:AppController
 - providers:AppService
UsersModule:
 - controllers:UsersController
 - providers:UsersService

初期化されたインスタンスを取得する

get()を使う。

> service = get(AppService)  // $(AppService) でもOK
AppService {}

インスタンスのメソッド一覧を表示する

methods()を使う。

> methods(AppService)

Methods:
 ◻ getHello

インスタンスのメソッドを呼び出す

> service = get(AppService)
AppService {}
> service.getHello()
'Hello World!'

getを使わずにインスタンスを新しく生成することも可能

> newService = new AppService()
AppService {}
> newService.getHello()
'Hello World!'

インストールしたパッケージを使う

ダイナミックインポートを使う。

> bcrypt = await import('bcryp')
> salt = bcrypt.genSaltSync(10)
'$2b$10$QhStEQz6BxS.zRROYqQjre'
> dayjs = (await import('dayjs')).default
> dayjs().format()
'2024-07-05T23:20:57+09:00'

Discussion