🐈‍⬛

ぼくのかんがえたさいきょうのNest.jsディレクトリ構成

2023/07/05に公開

Nest.js始めたはいいものの、ディレクトリ構成悩みますよね?
悩まない人いたら弟子にしてほしい。

対象の人

  • Nest.jsなんもわからん(マジ)
  • Nest.js始めたて
  • Nest.js使ってみたけどよくわからない

な人

Nest.jsで困ること

Nest.jsはNext.jsのようにディレクトリ構成が決まっていません。
その為、Nest.jsを始めたはいいものの、スパゲッティ化してしまうことが多いと思います。

ぼくのかんがえたさい(ry

プロジェクトによりますが、基本的にこのような構成にしています。
※今回はディレクトリ構成に関する記事です。モジュールの切り方については記載していません。

全体的にモジュールで仕切っていて、ディレクトリ1層ごとにモジュールになっています。(スクショに写っているディレクトリ下が無数に入れ子になっています)
しかし管理コストばかり増えるケースもあるので、開発速度とトレードオフです。

  • controllers
    • REST APIやGraphQLなどが入っています。
  • libs
    • Nest.jsに依存しない、ユーティリティ系のちょっとした自作ライブラリが入っています。
      そのうちnpmパッケージにしたい。
    • ここはNest.jsのディレクトリ構成とは少し違う領域にしています。
  • services
    • これはDDDなどに出てくる「service」を表しており、Nest.jsの『service』ではないです。(DDDを採用しているわけではない)
    • 各ディレクトリにモジュールが実装されていて、他のプロジェクトにそのまま持っていけるような構成になっています。

これらは全て入れ子ディレクトリになっており、フラットではありません。
一応理由があり、Nest.jsはモジュールがツリー構造になっているため、それに合わせてディレクトリもツリー構造(入れ子ディレクトリ)にしています。

https://docs.nestjs.com/modules より引用

Discussion