前言
在 NestJS 这个优秀的 Node.js 框架中,配置文件是不可避免的存在。不过,由于 NestJS 可以让我们通过 .env 文件和配置类(ConfigModule)进行自定义配置。因此,我们在项目中往往需要使用 ConfigModule 来进行配置文件的管理。
作为 NestJS 中一个经典的插件,@nestjs/config 已经成为了一项优秀的解决方案。但对于一个复杂应用,往往需要更复杂的配置文件书写的支持。这个时候,@vinsidious/nestjs-config 便是一项优秀的选择。
介绍
@vinsidious/nestjs-config 是一个支持多种格式的配置文件管理工具,支持 JSON、Yaml、INI、ENV 等多种格式。
使用 @vinsidious/nestjs-config,您可以将大量配置文件放在一个文件夹下,并在整个项目中使用它们。此外,与 @nestjs/config 不同的是,@vinsidious/nestjs-config还支持自动生成类型定义所需的 TypeScript 类型文件。
安装
通过 npm 安装
npm install --save @vinsidious/nestjs-config
通过 yarn 安装
yarn add @vinsidious/nestjs-config
使用
初始化
在开始使用 @vinsidious/nestjs-config 之前,您需要初始化它。
在 app.module.ts 中引入 ConfigModule 模块并进行初始化:
-- -------------------- ---- ------- ------ - ------ - ---- ----------------- ------ - ------------ - ---- ---------------------------- --------- -------- - ---------------------- ------------ ------- --------- ----- --- -- -- ------ ----- --------- --
envFilePath
: env 文件或其他格式文件放置的位置。如果使用了多种文件格式,就应该以逗号作为分隔符字符串来描述文件的名称。isGlobal
: 默认为 false。当为 true 时,将会把 ConfigModule 变成多个模块间共享的全局对象,在整个项目中的每个模块上导出 ConfigService。
配置文件
在 config 目录中创建配置文件,其中各个配置文件可以分别使用不同的文件格式。例如,我们可以定义一个 user.yaml 的配置文件:
host: localhost port: 3000 username: admin password: admin database: 'test'
使用配置文件
ConfigService
使用 ConfigService 获取配置文件的数据。例如:
-- -------------------- ---- ------- ------ - ---------- - ---- ----------------- ------ - ------------- - ---- ---------------------------- ------------- ------ ----- ---------- - ------------------- -------- -------------- -------------- -- ----------- ------ - ----- ---- - -------------------------------------------- ----- ---- - -------------------------------------------- ----- -------- - ------------------------------------------------ ----- -------- - ------------------------------------------------ ----- -------- - ------------------------------------------------ ------ ------------------------------------------------------------------------ - -
ConfigType 强类型
@vinsidious/nestjs-config 还可以通过 ConfigType
来指定 TypeScript 的类型,来更好的支持 IDE 自动补全和 TypeScript 强类型。
-- -------------------- ---- ------- ------ ----- ----------------- - ----- ------- ----- ------- --------- ------- --------- ------- --------- ------- - ----- ---------- - ---------------------------------------------
自动加载
您还可以将所有的配置文件加在到一个对象中进行管理。
-- -------------------- ---- ------- ------ - ---------- - ---- ---------------------------- ------ ----- ---------- ------------ --------- - ----- ------- ----- ------- --------- ------- --------- ------- --------- ------- -- ---- - ---- -------- ----- ------- -------- ------- ---- ------- -- -- - ---------
@vinsidious/nestjs-config 会自动查找 config 目录下的所有配置文件并将这些文件自动合并成一个对象。
示例代码
-- -------------------- ---- ------- ------ - ------ - ---- ----------------- ------ - ----------- ------------ - ---- ---------------------------- ------ ----- ---------- ------------ --------- - ----- ------- ----- ------- --------- ------- --------- ------- --------- ------- -- ---- - ---- -------- ----- ------- -------- ------- ---- ------- -- -- - --------- --------- -------- - ---------------------- ------------ ------- --------- ----- --- ----------------------------------------- -- -- ------ ----- --------- -- ------ - ---------- - ---- ----------------- ------ - ------------- - ---- ---------------------------- ------------- ------ ----- ---------- - ------------------- -------- -------------- -------------- -- -- ---- --- ----------- ------ - ----- ---- - ------------------------------------------------ ----- ---- - ------------------------------------------------ ----- -------- - ---------------------------------------------------- ----- -------- - ---------------------------------------------------- ----- -------- - ---------------------------------------------------- ------ ------------------------------------------------------------------------ - -- -- --- --- --------------- - ---- -------- ----- ------- -------- ------- ---- ------- - - ------ ------------------------------ - -
结论
@vinsidious/nestjs-config 带来了极高的灵活性和可扩展性,让我们可以更好地处理复杂的配置文件。
尝试使用 @vinsidious/nestjs-config,您将会发现它是一个非常优秀的配置文件管理工具,能够让您的 NestJS 项目更加完整和稳定。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b6151ab1864dac672f2