Skip to content

Commit ae690a9

Browse files
use config module for env variables
1 parent d6044ec commit ae690a9

File tree

6 files changed

+55
-18
lines changed

6 files changed

+55
-18
lines changed

.env.stage.dev

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
PORT=5000
2+
DB_HOST=db
3+
DB_PORT=5432
4+
DB_USERNAME=postgres
5+
DB_PASSWORD=postgres
6+
DB_DATABASE=postgres

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,7 @@ lerna-debug.log*
3232
!.vscode/settings.json
3333
!.vscode/tasks.json
3434
!.vscode/launch.json
35-
!.vscode/extensions.json
35+
!.vscode/extensions.json
36+
37+
# Environment variables
38+
.env.stage.prod

docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ services:
1111
- ./src:/app/src
1212
links:
1313
- db
14+
environment:
15+
STAGE: dev
1416

1517
db:
1618
image: postgres

package.json

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,20 @@
1010
"build": "nest build",
1111
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
1212
"start": "nest start",
13-
"start:dev": "nest start --watch",
14-
"start:debug": "nest start --debug --watch",
15-
"start:prod": "node dist/main",
13+
"start:dev": "STAGE=dev nest start --watch",
14+
"start:debug": "STAGE=dev nest start --debug --watch",
15+
"start:prod": "STAGE=prod node dist/main",
1616
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
17-
"test": "jest",
18-
"test:watch": "jest --watch",
19-
"test:cov": "jest --coverage",
17+
"test": "STAGE=dev jest",
18+
"test:watch": "STAGE=dev jest --watch",
19+
"test:cov": "STAGE=dev jest --coverage",
2020
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
2121
"test:e2e": "jest --config ./test/jest-e2e.json",
2222
"docker-compose:dev": "docker-compose up --build"
2323
},
2424
"dependencies": {
2525
"@nestjs/common": "^8.0.0",
26+
"@nestjs/config": "^2.0.0",
2627
"@nestjs/core": "^8.0.0",
2728
"@nestjs/platform-express": "^8.0.0",
2829
"@nestjs/typeorm": "^8.0.3",

src/app.module.ts

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,30 @@
11
import { Module } from '@nestjs/common';
2+
import { ConfigModule, ConfigService } from '@nestjs/config';
23
import { TypeOrmModule } from '@nestjs/typeorm';
34
import { AppController } from './app.controller';
45
import { AppService } from './app.service';
56
import { UsersModule } from './users/users.module';
67

78
@Module({
89
imports: [
9-
TypeOrmModule.forRoot({
10-
type: 'postgres',
11-
host: 'db',
12-
port: 5432,
13-
username: 'postgres',
14-
password: 'postgres',
15-
database: 'postgres',
16-
autoLoadEntities: true,
17-
synchronize: true,
10+
ConfigModule.forRoot({
11+
envFilePath: [`.env.stage.${process.env.STAGE}`],
12+
}),
13+
TypeOrmModule.forRootAsync({
14+
imports: [ConfigModule],
15+
inject: [ConfigService],
16+
useFactory: async (configService: ConfigService) => {
17+
return {
18+
type: 'postgres',
19+
host: configService.get('DB_HOST'),
20+
port: configService.get('DB_PORT'),
21+
username: configService.get('DB_USERNAME'),
22+
password: configService.get('DB_PASSWORD'),
23+
database: configService.get('DB_DATABASE'),
24+
autoLoadEntities: true,
25+
synchronize: true,
26+
};
27+
},
1828
}),
1929
UsersModule,
2030
],

yarn.lock

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,16 @@
602602
tslib "2.3.1"
603603
uuid "8.3.2"
604604

605+
"@nestjs/config@^2.0.0":
606+
version "2.0.0"
607+
resolved "https://registry.yarnpkg.com/@nestjs/config/-/config-2.0.0.tgz#a8fbec48a2b55488ac50ad5ed4cf2df89d398171"
608+
integrity sha512-Hi1k/1S5ogsS5c0OtNm72thiLSngijOaLDFaGI5ZPxNGpF23lctPg6ox3pYIOhXVRX/u+eiUIp71gswH2k8YNw==
609+
dependencies:
610+
dotenv "16.0.0"
611+
dotenv-expand "8.0.2"
612+
lodash "4.17.21"
613+
uuid "8.3.2"
614+
605615
"@nestjs/core@^8.0.0":
606616
version "8.4.4"
607617
resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-8.4.4.tgz#94fd2d63fd77791f616fbecafb79faa2235eeeff"
@@ -2002,7 +2012,12 @@ domexception@^2.0.1:
20022012
dependencies:
20032013
webidl-conversions "^5.0.0"
20042014

2005-
dotenv@^16.0.0:
2015+
dotenv-expand@8.0.2:
2016+
version "8.0.2"
2017+
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-8.0.2.tgz#c75c6f695cff061a9ed9a95a520c6cc84b912188"
2018+
integrity sha512-vKKAk+VOzAWOV/dPIeSYqhgC/TQY+6L6Ibkzfsr8xd1stdBsTuGu9asCOXgbYbBeS+f2Y6lqqEuw7riOA+xEUQ==
2019+
2020+
dotenv@16.0.0, dotenv@^16.0.0:
20062021
version "16.0.0"
20072022
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411"
20082023
integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==
@@ -3513,7 +3528,7 @@ lodash.merge@^4.6.2:
35133528
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
35143529
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
35153530

3516-
lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0:
3531+
lodash@4.17.21, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0:
35173532
version "4.17.21"
35183533
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
35193534
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==

0 commit comments

Comments
 (0)