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}`);
"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",
vi .env.development
試しに API_PORT という値をセットしてみます
DATABASE_URL="mysql://myuser:mypassword@localhost:3306/mydb?schema=public"
API_PORT=4000
src/main.ts
await app.listen(3000);
↓
await app.listen(Number(process.env.API_PORT) || 3000);
npm run start:dev
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