Nestjs は開発環境と本番環境の区別を設定します
最初の一歩
npm i --save @nestjs/config
npm i js-yaml
npm i -D @types/js-yaml
npm i cross-env
第二段階
- src の下に config/configuration.ts を作成して、yaml インポート ファイルのニーズを設定します
- 列挙管理を容易にするために、src の下に enum/config.enum.ts を作成します。
第三段階
@@filename(configuration)
import {
readFileSync } from 'fs';
import * as yaml from 'js-yaml';
import {
join } from 'path';
import {
merge } from 'lodash';
const YAML_CONFIG_FILENAME = 'config.yaml';
const YAML_CONFIG_ENV = `config.${
process.env.NODE_ENV || 'development'}.yaml`;
const filePath = yaml.load(
readFileSync(join(__dirname, '../../config', YAML_CONFIG_FILENAME), 'utf8'),
) as Record<string, any>;
const envPath = yaml.load(
readFileSync(join(__dirname, '../../config', YAML_CONFIG_ENV), 'utf8'),
);
const mergePath = merge(filePath, envPath);
export default () => {
return mergePath;
};
4番目のステップ
@@filename(app.Module)
import {
Module } from '@nestjs/common';
import {
ConfigModule } from '@nestjs/config';
import configuration from './config/configuration';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
load: [configuration],
}),
],
controllers: [],
providers: [],
})
export class AppModule {
}
5番目のステップ
@@filename(config.yaml)
db:
mysql: 'localhost:3000'
mongoose: 'localhost:4000'
@@filename(config.development.yaml)
db:
NODE_ENV: 'development'
@@filename(config.production.yaml)
db:
NODE_ENV: 'production'
やっと
@@filename(package.json)
"scripts":{
"start:dev": "cross-env NODE_ENV=development nest start --watch",
"start:prod": "cross-env NODE_ENV=production node dist/main",
}