# Node-config 教程

> 标题： [http://zetcode.com/javascript/nodeconfig/](http://zetcode.com/javascript/nodeconfig/)

Node-config 教程展示了如何使用 node-config 模块为 Node 应用创建配置文件。

## Node-config 

Node-config 创建用于应用部署的配置文件。

Node-config 允许我们定义一组默认参数，并将它们扩展为不同的部署环境（开发，质量保证，登台，生产等）。

配置文件位于默认的`config`目录中。 可以使用`NODE_CONFIG_DIR`环境变量覆盖该位置。 `NODE_ENV`环境变量包含我们应用的部署环境的名称； 默认为`development`。

Node-config 支持各种配置文件格式，包括 JSON，YAML，属性或 XML。 默认配置文件为`default.json`（或`default.yaml`和`default.xml`）。 如果我们使用生产部署，那么将从`production.json`加载配置。

## 安装 Node-config 

首先，我们安装`node-config`。

```js
$ node -v
v11.5.0

```

我们使用 Node 版本 11.5.0。

```js
$ npm init -y

```

我们启动一个新的 Node 应用。

```js
$ npm i config

```

我们使用`nmp i config`安装 node-config。

```js
$ npm i js-yaml

```

此外，我们安装了`js-yaml`以支持 YAML。

## Node-config 示例

以下示例使用`config`包检索配置数据。

`config/default.json`

```js
{
    "app": {
        "port": 3000
    },
    "db": {
        "host": "localhost",
        "port": 27017,
        "name": "ydb"
    }
}

```

我们在`config`目录中有`default.json`。

`simple.js`

```js
const config = require('config');

let appPort = config.get('app.port');
console.log(`Application port: ${appPort}`);

let dbHost = config.get('db.host');
console.log(`Database host: ${dbHost}`);

let dbPort = config.get('db.port');
console.log(`Database port: ${dbPort}`);

let dbName = config.get('db.name');
console.log(`Database name: ${dbName}`);

console.log('NODE_ENV: ' + config.util.getEnv('NODE_ENV'));

```

我们加载`config`包，并使用`config.get()`函数获取值。 默认部署类型在`NODE_ENV`中指定。

```js
$ node simple.js
Application port: 3000
Database host: localhost
Database port: 27017
Database name: ydb
NODE_ENV: development

```

这是输出。

## Node-config 示例 II

我们将配置文件更改为 YAML 并设置生产部署环境。

`config/default.yaml`

```js
app:
  port: 3000

db: 
  host: localhost
  port: 27017
  name: ydb

```

这是`default.yaml`文件。

`config/production.yaml`

```js
app:
  port: 3300

db: 
  host: localhost
  port: 27017
  name: mydb

```

这是`production.yaml`文件。

`simple.js`

```js
const config = require('config');

let appPort = config.get('app.port');
console.log(`Application port: ${appPort}`);
...

```

`simple.js`文件是相同的。

```js
$ node simple.js
Application port: 3000
Database host: localhost
Database port: 27017
Database name: ydb
NODE_ENV: development

```

这是默认环境的输出。 从`default.yaml`加载配置。

```js
$ set NODE_ENV=production
$ node simple.js
Application port: 3300
Database host: localhost
Database port: 27017
Database name: mydb
NODE_ENV: production

```

我们使用`set`命令更改`NODE_ENV`变量。 （在 Linux 上使用`export`。）现在，从`production.yaml`文件加载配置数据。

在本教程中，我们使用`node-config`包为 Node.js 应用创建配置文件。

您可能也对以下相关教程感兴趣： [Node.js 教程](/javascript/nodejs/)。 列出[所有 JavaScript 教程](/all/#js)。