我有一个配置文件,其中存储了密码并使用了数据
console.log
我还有一个PostgreSQL数据库连接文件
const nums = [1, 2, 3, 4, 5];
console.log(
nums.every((num, index) => (
index !== nums.length - 1
? num + 1 === nums[index + 1]
: true
))
);
在我的'use strict';
export default {
dbProd: {
connectionString: 'postgres://...',
},
dbDev: {
connectionString: 'postgres://...',
},
...
}
文件中,有三个脚本。第一个启动项目,第二个开发,第三个用于生产
'use strict';
import { Pool } from 'pg';
import config from './../config';
export default new Pool({
connectionString: config.dbDev.connectionString,
ssl: true
});
当我收集用于生产的项目以通过package.json
连接到数据库,并且开发内容已转移到 "scripts": {
"start": "nodemon --exec babel-node src/index.js",
"devbuild": "babel src --out-dir dev-backend",
"build": "babel src --out-dir backend"
},
时,我就需要它。如何实现?
答案 0 :(得分:2)
您应该考虑使用节点包config
NPM Config,因为它使这些事情变得更加容易。
您只需要在default.json
文件夹中创建一个/config
文件,其中将包含所有开发配置以及在开发或生产中都不会更改的配置。您必须创建的第二个文件是production.json
文件,其中包含覆盖默认键:值的所有生产配置。
在您的package.json
中,您只需要一个用于生产环境的开始脚本和一个用于开发的脚本。看起来可能像这样:
"start": "SET NODE_ENV=production& node ./bin/www",
"dev": "node ./bin/www",
通过设置NODE_ENV=production
,配置模块将加载默认配置并查看生产文件内部,以找出在生产模式下必须覆盖哪些值。
default config file
的简单示例:
{
"Services": {
"api": {
"username": "user",
"password": "password",
"base_url": "https://development.com/test"
}
},
"Network": {
"proxy": {
"host": "http://myproxy/",
"port": 80
}
}
}
如果代理始终是相同的,只是API发生了变化,则production file
会像这样:
{
"Services": {
"api": {
"username": "prodUser",
"password": "prodPassword",
"base_url": "https://production.com/test"
}
}
}
现在可以在您的代码中使用它,例如:
const config = require('config');
const serviceConfig = config.get('Services');
const networkConfig = config.get('Network');
networkConfig.get('proxy.host')+":"+networkConfig.get('proxy.port')
答案 1 :(得分:0)
您需要使用 config 软件包或任何其他流行的软件包,这些软件包允许您为每种环境定义不同的配置。
使用 config ,您必须制作 / config 文件夹,您可以在其中放置每个环境的所有配置,如下所示:
{{serialisedData | json}}
用法:
/config/development.json
/config/production.json
该程序包使用 NODE_ENV 环境变量值来确定要使用的配置,因此您必须在启动应用程序之前设置此变量。
var config = require('config');
//...
var dbConfig = config.get('Customer.dbConfig');
db.connect(dbConfig, ...);
if (config.has('optionalFeature.detail')) {
var detail = config.get('optionalFeature.detail');
//...
}