要指定env变量,有很多对dotenv库的引用。但为什么?我可以在这样的文件中指定var:
var dev = {
}
var prod = {
}
var config = null;
if (process.env.NODE_ENV === 'production') {
config = prod
} else {
config = dev
}
exports.config = config
并在npm srcipts
中分配我的var,如下所示:
"scripts": {
"start": "NODE_ENV=dev node bin/dev",
"production": "NODE_ENV=production node bin/production"
}
我的方法安全吗?为什么dotenv推荐方式?为什么我应该创建.env文件而不是config.js?
答案 0 :(得分:1)
环境变量是在所有编程语言中配置程序行为的常用方法。大多数CI / CD工具都提供了开箱即用的支持,并且可以很好地与命令行配合使用。
在您的示例中,您假设prd
环境的完整配置将存储在该配置中,包括db密码等。在源代码中存储任何机密不被认为是安全的。 / p>
.env
文件是用于捆绑环境变量的常用实用程序。使用这种模式创建一个.gitignore
文件确实很容易,这样可以防止提交该文件,从而使配置保持本地状态。请注意,程序包的使用者不必使用.env文件,但也可以在运行脚本的全局/本地环境变量中使用。开发扎实,不容易出错。
语法简单。而不是创建包含配置的即席源代码文件,其语法比key=value
更复杂,并且不易理解。
答案 1 :(得分:1)
@Nastro,我将指出一些简单的不同方法。
开发与环境100%无关的应用程序。换句话说,请远离代码中的版本控制文件 内的代码或大量的 如果为全局变量,会话属性等分配不同的值。
使用适当的env变量和值来使您的环境更受欢迎。通常,最具战略性或特殊性的环境将受到保护,防止不必要的访问(生产,暂存等),因此您的秘密价值将无法获得。
单个db_password = process.env.DB_PASS
将可用于您或您的团队创建的任何现有和将来的环境。
这是一种简单但有效的方法,但要求对您的环境和主机的控制最小。