NestJS / Prisma で 本番環境( .env.production ) / 開発環境( .env.development )ごとの .env を 使用する

● NestJS で 本番 / 開発 環境ごとの .env を 使用する

・ パッケージのインストール

npm i --save @nestjs/config

・ファイルの修正

src/app.module.ts の imports に下記を追加

import { ConfigModule } from '@nestjs/config';

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `.env.${process.env.NODE_ENV}`,
    }),

また、確認ように、次のようなコンソール表示を追加しておくのも良いです

console.log(`NODE_ENV の値は : ${process.env.NODE_ENV}`);

・package.json の修正

    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",

  ↓ NODE_ENV=development または NODE_ENV=production を追加します

    "start": "NODE_ENV=development nest start",
    "start:dev": "NODE_ENV=development nest start --watch",
    "start:debug": "NODE_ENV=development nest start --debug --watch",
    "start:prod": "NODE_ENV=production node dist/main",

・.env.development の作成

vi .env.development

試しに API_PORT という値をセットしてみます

DATABASE_URL="mysql://myuser:mypassword@localhost:3306/mydb?schema=public"
API_PORT=4000

・ポートを API_PORT の値に設定する

src/main.ts

  await app.listen(3000);

  ↓

  await app.listen(Number(process.env.API_PORT) || 3000);

・ サーバーを起動してテストする

npm run start:dev

http://localhost:4000

● Prisma CLI で 本番 / 開発 環境ごとの .env を 使用する

dotenv-cli を使って環境ごとにファイルを振り分けます

 npm i -D dotenv-cli

dotenv-cli を利用するので、実行コマンドを package.json の scripts に記述します。

例えば、以下のように設定しておきます

    "prisma:reset": "dotenv -e .env.development -- npx prisma migrate reset --force --skip-seed",
    "prisma:migrate": "dotenv -e .env.development -- npx prisma migrate dev",
    "prisma:seed": "dotenv -e .env.development -- npx prisma db seed"

次のコマンドで実行します

npm run prisma:reset

公式サイト : https://www.prisma.io/docs/guides/development-environment/environment-variables/using-multiple-env-files

No.2306
05/02 17:07

edit