はじめに
この記事は、個人的にこうしたらよいのではないかという意見をまとめたものです。
ご指摘などあればコメントで教えていただけると嬉しいです。
前提
こちらの記事はApp Routerを使用しているプロジェクトのディレクトリ構成について書いています。
コンポーネントをどのように管理するか
結論、様々なページで使用するコンポーネントはappディレクトリ配下に置いて、あるページのみでしか使用しないコンポーネントはappディレクトリの外に置くということが大切であると考えます。
appディレクトリ管理するコンポーネントの例
・buttonコンポーネント
・inputコンポーネント
・layoutを指定しているコンポーネント など
※components配下に「elements」フォルダや、「layout」フォルダを作成し、コンポーネントをまとめていくと管理しやすくなります。
appディレクトリの外で管理するコンポーネントの例
appディレクトリ配下で管理しないコンポーネントは、「features」という名前のディレクトリで機能ごとにコンポーネントを管理します。
例えば、ブログの一覧ページで使用するコンポーネントを作成するとして、そのコンポーネントは、他の機能では使用しない、ブログページ固有のコンポーネントであるので、featuresディレクトリ配下に「Blog」ディレクトリを作成し、その中にまとめるなどすれば、管理しやすくなるのでは無いかと思います。
つまり、featuresディレクトリは、機能ごとに使用するコンポーネントを管理するディレクトリと言えるでしょう。
テストファイルの置き場所
テストファイルは、同じ階層に置くとよいかと思います。
テストファイルはテストフォルダに全てまとめるというのも良いかと思いますが、コンポーネントが増えてくると、ファイルを見つけにくくなってしまうので、同階層にまとめたほうが良いと思っています。Storybookを使用するのであれば、そのファイルも一緒に置いておくと良いかと思います。
以下の記事が参考になります。
まとめ
今回は、Next.jsのディレクトリ構造のベストプラクティスについて考えました。
最初にも書きましたが、自分個人としての意見なので、ご意見やご指摘など書いていただけると幸いです。
最後に
他にも色々な記事を書いているので、よければ読んでいってください、、、