工具版本
- nodejs:20.9.0
- npm:10.1.0
- nestjs:10.0.0
新建项目
//脚手架安装
pnpm i -g @nestjs/cli
//新建项目
nest new project-name
安装cross-env
pnpm install --save-dev cross-env
安装后,根目录下新建.env.production和.env.development两个文件,在package.json中的脚本中假如cross-env NODE_ENV=production这段代码,启动项目时用来设置环境变量,package.json代码如下:
{
"scripts": {
"build": "cross-env NODE_ENV=production nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "cross-env NODE_ENV=development nest start",
"start:dev": "cross-env NODE_ENV=development nest start --watch",
"start:debug": "nest start --debug --watch",
"start:prod": "cross-env NODE_ENV=production node dist/main",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "jest --config ./test/jest-e2e.json"
}
}
nest中ConfigModule配置环境
安装@nestjs/config模块
pnpm i @nestjs/config
在/src/app.module.ts中
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { ConfigModule } from '@nestjs/config'
@Module({
imports: [
// 环境变量配置
ConfigModule.forRoot({
isGlobal: true,
// 指定存储环境变量的文件, 靠前的文件拥有较高的优先级
envFilePath: [`.env.${process.env.NODE_ENV || 'development'}`, '.env'],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule { }
使用
在.env.production和.env.development中写入配置,如NAME=demo
在服务中注入ConfigService,调用get方法:
import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
@Injectable()
export class AppService {
constructor(
private configService:ConfigService,
) {
console.log(this.configService.get('NAME'))
}
}
结束