黄小霞黄小梅全家大乱-午夜约120秒试看-恋秀2站直播大厅入

操纵 Node

发布日期:2022-01-13 12:56    点击次数:67

  

管理跨差别环境的多个配置文件能够具有挑衅性,并且有多栽工具正试图用差别的手段解决这个题目。但是,在本文中,吾们将学习如何操纵 node-config[1] 跨差别安放环境创建和管理 Node.js 配置文件。

node-config是什么?

Node-config批准你在你的Node行使程序中为差别的安放环境创建配置文件。有了它,你能够定义一个你打算跨环境重复操纵的默认配置文件,然后将默认配置扩展到其他环境,如开发、暂存等。

你能够操纵一些一时的命令走参数来遮盖这些参数,比如在你的命令走参数中添入NODE_ENV=development。

Node-config使创建和管理一个在一切安放环境中共享的相反的配置界面变得更添容易。

为了更益地理解如何竖立这个配置,让吾们操纵一个Node行使样本。最先,在你的终端上运走下面的命令来克隆这个资源库,或者从这边下载并解压它。

git clone https://github.com/ezesundayeze/node-env-sample 

要安设 Node 倚赖项,请运走:

npm install 
竖立 node-config

由于node-config是一个npm包,吾们能够经由过程运走这些命令中的任何一个来用npm或yarn安设它。

npm install config 

或者

yarn add config 
声援的 node-config 文件扩展名

Node-config 声援很多文件扩展名。在发布时,现在版本的 node-config (3.3.6) 声援以下扩展:

- .json - .json5 - .hjson - .yaml or .yml - .coffee - .js - .cson - .properties - .toml - .ts - .xml 

这意味着你能够用任何一个声援的扩展来创建你的配置文件,但为你的项现在选择一个扩展并在整个构建过程中坚持操纵它是有意义的。

在本教程中,吾们将操纵 .json 扩展名。

创建默认环境变量

创建一个 config 现在录并向其中增补一个 config/default.json 文件。这将是默认配置文件,并将包含一切默认环境变量。

在吾们的示例行使程序中它答该是如许的:

config/default.json

{   "server": {     "host": "localhost",     "port": 0,   } } 

吾们将在吾们的行使程序中经由过程导入 config 和操纵 get 手段访问变量来访问它。

const config = require('config'); const port = config.get('server.port'); const host = config.get('server.host'); 

让吾们创建一个 server.js 文件并增补以下代码。

const express = require('express'); const config = require('config'); const app = express(); const port = config.get('server.port'); const host = config.get('server.host');  app.get('/', (req, res) => {   res.send('Hello World'); }); const server = app.listen(port, host, (err) => {   if (err) {     console.log(err);     process.exit(1);   }   console.log(`Server is running on ${host}:${server.address().port}`); }); 

你能够在你的行使程序的其他片面以相通的手段操纵node-config。

扩展默认配置文件

你能够经由过程创建其他配置文件来扩展默认的配置文件。例如,你能够为开发、生产、QA、暂存、本地等创建配置文件。让吾们来介绍一下吾们将在吾们的行使程序中操纵的配置文件的主要类型。

本地配置文件

创建本地配置文件是为了遮盖你的配置文件的安放版本。例如,对于你的开发安放,你能够有一个 local-development.json 文件来存储你一切的本地开发配置——它逆映了你在安放的开发环境中憧憬的那栽走为。

因此,你能够拥有如许的东西:

local-{instance}.EXT local-{deployment}.EXT local-{deployment}-{instance}.EXT 
短主机名和完善主机名

你也能够操纵简短和完善的主机名来定义你在特定平台上的配置文件,以防你要在多个实例上进走安放。例如,您能够有一个 {short_hostname},它将代外您的服务器名称直到第一个点。倘若您的主机名是 demo.example.com,则配置能够是 demo.EXT (demo.json)。

此外,倘若您的 {full_hostname} 是您的整个服务器名称,则您能够在 {short_hostname} 与其他机器发生冲突时操纵它。因此,在您的主机名是 demo.example.com 的情况下,您的配置文件名将是 demo.example.com.json。

自定义配置文件

你能够还想创建一个自定义的配置文件来原谅一些环境变量的遮盖。Node-config挑供了对配置文件类型的声援,你能够用 custom-environment-variables.EXT(custom-environment-variables.json)的名字来定义。

测试配置值

倘若您的环境变量异国竖立,操纵它们的服务就会休止。因此,你答该确保你的环境变量已经过测试。Node-config 挑供了多个实用程序,其中之一是 config.has() 手段,它批准您验证是否竖立了环境变量。

你能够创建一个测试文件或将其增补到你的预挑交钩子中,以确保你的配置文件都已竖立益。

以下是如何操纵 config.has() 检查配置变量是否存在的示例:

if (config.has('dbConfig')) {  ...  } 

你也能够在你的Jest测试中操纵它,像如许:

const config = require('config'); test('Server config exist', () => {   expect(config.has("server")).toBe(true); }); test('Default config exist', () => {   expect(config.has("server.port")).toBe(true);   expect(config.has("server.host")).toBe(true); }); 
操纵命令走重写

操纵命令走遮盖批准你从你的终端或命令走中即时指定配置参数。你必要在启动行使程序时经由过程指定 NODE_CONFIG='{...}' 命令来竖立配置,参数必须是JSON字符串的格式。

下面是一个例子:

NODE_CONFIG='{"server": {"host":"192.168.43.13", "port":"3030"}}' npm run dev 

JSON 值周围的单引号批准您坦然地操纵双引号。在某些情况下,按照您的操作体系,您能够必要对某些字符进走转义。您还能够操纵命令走导出来避免不息键入命令。

在你的终端上运走下面的命令将遮盖你的服务器的主机和端口或你选择遮盖的任何其他配置。

export NODE_CONFIG='{"server": {"host":"192.168.43.13", "port":"3030"}}' 

倘若您更爱操纵 JavaScript,能够在调用配置库之前将其增补到您的服务器文件中,如下所示:

const express = require('express'); process.env.NODE_CONFIG = '{"server": {"host":"localhost", "port":"3030"}}'; const config = require('config'); 

诀窍是在配置添载之前将 NODE_CONFIG 变量竖立为 JSON 字符串。

发生这栽情况是由于命令走遮盖优先于一切其他类型的遮盖。下面是一些在操纵 node-config 时不克用作环境变量的保留字,由于库挑供了它们的实现,能够会与您的实现冲突。

get has util getConfigSources makeHidden makeImmutable setModuleDefaults watch  _attachProtoDeep _cloneDeep _diffDeep 

这不是一个详细的列外,因此必定要查望文档。

有一些插件能够让你高效地操纵 node-config 和 Docker 来管理密钥,一个插件能够让你自动重新添载 node-config[2](你能够已经清新,配置不会在文件更改时自动添载),以及批准您作废缓存您的配置(uncache your config)[3]变量的插件。

总结

操纵 node-config 时,有多数栽手段能够配置您的 Node 行使程序。有了它,您能够轻盈管理您的配置文件并按照必要扩展它们,从而在您的项现在中实现最大的变通性、郑重性和相反性。谢谢浏览。

原文:https://blog.logrocket.com/creating-configuration-files-node-js-using-node-config/

参考原料

[1]node-config: https://github.com/lorenwest/node-config

[2]重新添载 node-config: https://github.com/MrBoolean/node-config-uncached

[3]作废缓存您的配置(uncache your config): https://www.npmjs.com/package/config-reloadable

本文转载自微信公多号「前端全栈开发者」,能够经由过程以下二维码关注。转载本文请有关前端全栈开发者公多号。

【编辑选举】

鸿蒙官方战略配相符共建——HarmonyOS技术社区 Sentry 企业级数据坦然解决方案 - Relay 配置选项 K8s Nginx Lngress 常用的 9个 配置(Annotation),你清新几个? 2021数字坦然十大事件发布 Facebook配置连发宕机、Apache Log4j2漏洞上榜 Sentry 企业级数据坦然解决方案 - Relay 项现在配置 PostgreSQl 12主从流复制及归档配置

Powered by 黄小霞黄小梅全家大乱-午夜约120秒试看-恋秀2站直播大厅入 @2013-2021 RSS地图 HTML地图

Copyright 365站群 © 2013-2021 365建站器 版权所有