如何将不包含在app.js
中的任何数据库登录或ssh提交到GitHub的提交?
我问是因为我试图将包含机密信息的文件包含到.gitignore
中,但是该文件还包含其他代码,如果有人将其克隆,则该代码需要上载到GitHub才能运行应用程序或叉子...
答案 0 :(得分:0)
使用.env文件加载环境变量
要这样做,您需要:
安装dotenv
yarn add dotenv
或
npm install dotenv
然后创建一个.env文件,在其中保存您的信息,例如
PASSWORD="777700"
然后将其添加到您的index.js文件
const dotenv = require("dotenv")
dotenv.config()
然后只需通过
在文件中访问它console.log(process.env.PASSWORD) // "777700"
最后将.env文件添加到您的.gitignore
答案 1 :(得分:0)
您应确保您为{em>任何和所有配置文件设置了.gitignore
条目。正常情况下,我会有一个概括的config/*.json
条目,以避免意外提交任何内容。
您可以包括这些文件的“示例”版本,人们可以复制和自定义这些文件的“示例”版本以反映其本地配置,例如config/server.json.example
或类似的版本。
还有.env
之类的工具,它们的格式更一致,并使用环境变量或.env
文件覆盖它们。这也很容易被忽略。
与往常一样,在您的README.md
文件中完整记录配置过程,并定期测试说明是否仍然有效。
答案 2 :(得分:0)
您应该使用dotenv lib。
以下是使用dotenv保留环境变量的示例。
.env
SECRET=development
PORT=3002
SECRET=RC
SCRYPTPARAM=
PGHOST=0.0.0.0
PGPORT=5432
PGDATABASE=
PGUSER=postgres
PGPASSWORD=
要在app.js
中使用环境变量,只需在使用环境变量之前调用dotenv。
app.js
require('dotenv').config() // <-- here you load your env vars from .env file.
const express = require('express');
const logger = require('morgan');
const cors = require('cors');
const expressJwt = require('express-jwt');
const app = express();
app.use('/secure', expressJwt({ secret: process.env.SECRET }));
cors({ credentials: true, origin: true });
app.use(cors());
app.use(express.json());
if (process.env.NODE_ENV !== 'test') { app.use(logger('dev')); }
app.use(require('./server/index'));
module.exports = app;