🍎

NestJS v10がリリースされたので、アップデート内容を見ていく🔍

2023/07/10に公開

株式会社ウェイブで新規サービスの開発を行なっています、こしけです!

今回は新規サービスで利用しているNestJSにv10のメジャーアップデートが来ていたのでそちらの内容をざっくり見ていこうと思います!
こちらの公式がアップデート内容をまとめてくださっている記事を参考に本記事は書いています。

SWCが利用可能に

概要

1つ目はNestJSでSWC[1]が利用可能になりました。
SWCはコンパイルとバンドルの両方に使用できる高速で拡張可能なRustベースのプラットフォームだそうです。
公式の記載を見る限り、SWCはデフォルトのTypeScriptコンパイラよりも約20倍高速みたいです。
> SWC is approximately x20 times faster than the default TypeScript compiler.

使い方

基本的な導入方法はとても簡単で下記の2ステップで導入が出来ます!

  1. 必要なパッケージのインストール
npm i --save-dev @swc/cli @swc/core
  1. 起動時のコマンドに-b swcフラグを追加する
nest start -b swc

nest-cli.jsonを使っている場合はその中にこんな感じで追記すればいいみたいです。

{
  "compilerOptions": {
    "builder": "swc"
  }
}

これで再度起動すればSWCが有効になっていると思います!

※ 注意点
SWCを利用する場合はデフォルトではtypecheckを行ってくれないです。
もしtypecheckを行いたい場合は --type-checkフラグを追加する必要があります。

nest start -b swc --type-check

デフォルトのTypeScriptコンパイラであればタイプチェックに失敗した場合はサーバーが起動しないのですが、SWCのタイプチェックの場合は型エラーのメッセージはコンソールに表示されるが起動自体はしてしまいます。
個人的には型エラー見逃してしまいそうでちょっと怖いなって思いました 🦖

テストでmoduleをoverride出来るように

概要

今まではテスト内でproviderはoverrideProviderを使うことで上書きできていたのですが、それのmodule版が追加されたみたいです。

使い方

使い方はproviderを上書きするのとほとんど同じで、下記の様な感じで上書き出来るみたいです。

const module: TestingModule = await Test.createTestingModule({
	...
    })
      .overrideModule(HogeModule)
      .useModule(HogeTestModule)
      .compile();

この例だとテスト内ではHogeModuleの代わりにHogeTestModuleが使われます。

サービスが大規模になってきたりするとかなり活躍しそうな機能ですね!⭐️

Redisのwildcard subscriptionsが利用可能に

概要

こちらを使うことで指定したパターンに一致したメッセージを購読可能になります。
有効にすることで内部的にsubscribe/messageの代わりに psubscribe/pmessage[2]が使われる様になるみたいです。

使い方

  • createMicroserviceメソッドの引数内のオプションにwildcards: trueを追加するだけみたいです。
const app = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
  transport: Transport.REDIS,
  options: {
    host: 'localhost',
    port: 6379,
    wildcards: true,
  },
});

僕達のサービスでは使っていない箇所だったので、NestJSにこんな機能もあったのかと勉強になりました!
それとそもそもRedisはキャッシュのイメージしか無かったのですが、この様なメッセージ配信の仕組みも備えているということを知れたのは新たな発見でした!🆕

CacheModuleが別パッケージに

今まで@nestjs/commonに含まれていたCacheModuleが@nestjs/cache-managerというパッケージになったみたいです!

Node.js v12のサポート終了

Node.js v12がサポート終了になったのに伴い、NestJSでもサポートを終了したみたいです。
NestJSではNode.js v16以降が必要になるそうです!

NestJS CLIプラグインにTypeScriptv4.8以上が必要に

NestJS CLIプラグインにTypeScriptのv4.8以上が必要となる為、古いバージョンのTypeScriptはサポートされなくなるそうです。

最後に

今回は簡単にですが、NestJS v10で追加された機能や変更点などを見ていきました。
公式がかなり分かりやすくまとめてくださってるのはとてもありがたいですね 🙏
アップデート内容を見ていくと知らない機能や単語が沢山出てくるので、とても学びが多くて個人的にはとても好きな作業です 🎉
今後も何かをアップデートする際にはせっかくなので記事にしていければ良いな〜と思ってます!

宣伝

株式会社ウェイブでは、電子コミックやアニメ配信サービスなどを自社開発で運営しております。
新しい技術を積極的に取り入れているモダンな環境が整っているウェイブで一緒に働いてみませんか?
興味ある方は是非こちらをご覧ください!

https://hrmos.co/pages/wwwave

脚注
  1. https://swc.rs/ ↩︎

  2. https://redis.io/commands/psubscribe/ ↩︎

wwwave's Techblog

Discussion