👪

NestJS+prisma nest-cli.json上のassetsの記述について

2024/06/10に公開

APIの構築にNestJSを使用し、ORMにprismaを採用しているとします。そして、prismaからgeneratedされたソース(以下prisma_generated)をsrc外に配置して管理している場合を考えます。この時、デフォルトのコンパイル設定でnest標準のbuildかstartをするとprisma_generatedが見つからないエラーになります。デフォルトの設定ではsrc外のファイルが対象外になるためです。

公式はこちら
https://docs.nestjs.com/cli/monorepo#assets

必要なコンパイル設定

nest-cli.json上に次の設定を行い、prisma_generatedをoutputされるdistに追加されるようにする必要があります。

{
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
    "assets": [
      { "include": "../prisma_generated/**/*", "outDir": "./dist/prisma_generated", "watchAssets": true },
    ]
    .
    .
    .
  }
}

※prisma_generatedがsrcと同階層にあります。
ここで注意していただきたいがのが、includeに指定するファイルパスはsourceRootに指定したsrcからの相対パスになることです。また、outDirを例の通り指定しない場合はprisma_generatedというディレクトリが無視され、直下のファイルが全てdist直下に配置されてしまいます。そして、outDirへのファイルパスはincludeとは異なり、nest-cli.jsonから見たパスを指定する必要があることに注意してください。

Discussion