使用 serverless-dotenv-plugin 更正 .env 文件
Correct .env file with serverless-dotenv-plugin
我使用以下作为自定义 serverless-dotenv-plugin
插件配置:
custom:
dotenv:
path: .env-${opt:stage, 'local'}
但我真正想得到的是当我不提供参数时从 .env
文件加载环境,当我使用 staging
作为 CLI 时从 .env.staging
文件加载环境参数。
上面的path
不知道怎么能体现出来。有什么帮助吗?
我使用普通的 dotenv 插件让你的用例正常工作。
在我的 serverless.yaml
中,我根据 stage
参数指定要从文件加载的环境变量(默认为 dev
):
provider:
stage: ${opt:stage, 'dev'}
environment:
FOO: ${file(./config.${self:provider.stage}.js):getEnvVars.FOO}
BAR: ${file(./config.${self:provider.stage}.js):getEnvVars.BAR}
然后每个阶段一个文件从右边加载环境变量.env file
:
config.dev.js
:
require('dotenv').config({path: __dirname + '/dev.env'});
const config = require('./environmentVariables.js');
module.exports.getEnvVars = config.getEnvVars;
config.production.js
:
require('dotenv').config({path: __dirname + '/production.env'});
const config = require('./environmentVariables.js');
module.exports.getEnvVars = config.getEnvVars;
我没有导出上述每个配置文件中的每个环境变量,而是为此创建了一个帮助文件 (environmentVariables.js
):
module.exports.getEnvVars = () => ({
FOO: process.env.FOO,
BAR: process.env.BAR
});
最后但同样重要的是 .env
包含实际变量的文件。我将文件命名为 dev.env
和 production.env
.
FOO=foo
BAR=bar
它就像一个魅力,唯一的缺点是每当你想添加一个新的环境变量时,你必须编辑几个不同的文件。
我是 serverless-dotenv-plugin 的作者。尝试从提供程序或其他选项动态加载 env 文件时出现逻辑问题。不过,我已经更新了插件,以便您可以根据设置的环境动态加载 env 文件。
例如,如果您 运行 "NODE_ENV=production sls deploy" 它将查找名为 .env.production 的文件。如果找不到,它将回退到 .env.
有关详细信息,请参阅自述文件 https://github.com/infrontlabs/serverless-dotenv-plugin
我使用以下作为自定义 serverless-dotenv-plugin
插件配置:
custom:
dotenv:
path: .env-${opt:stage, 'local'}
但我真正想得到的是当我不提供参数时从 .env
文件加载环境,当我使用 staging
作为 CLI 时从 .env.staging
文件加载环境参数。
上面的path
不知道怎么能体现出来。有什么帮助吗?
我使用普通的 dotenv 插件让你的用例正常工作。
在我的 serverless.yaml
中,我根据 stage
参数指定要从文件加载的环境变量(默认为 dev
):
provider:
stage: ${opt:stage, 'dev'}
environment:
FOO: ${file(./config.${self:provider.stage}.js):getEnvVars.FOO}
BAR: ${file(./config.${self:provider.stage}.js):getEnvVars.BAR}
然后每个阶段一个文件从右边加载环境变量.env file
:
config.dev.js
:
require('dotenv').config({path: __dirname + '/dev.env'});
const config = require('./environmentVariables.js');
module.exports.getEnvVars = config.getEnvVars;
config.production.js
:
require('dotenv').config({path: __dirname + '/production.env'});
const config = require('./environmentVariables.js');
module.exports.getEnvVars = config.getEnvVars;
我没有导出上述每个配置文件中的每个环境变量,而是为此创建了一个帮助文件 (environmentVariables.js
):
module.exports.getEnvVars = () => ({
FOO: process.env.FOO,
BAR: process.env.BAR
});
最后但同样重要的是 .env
包含实际变量的文件。我将文件命名为 dev.env
和 production.env
.
FOO=foo
BAR=bar
它就像一个魅力,唯一的缺点是每当你想添加一个新的环境变量时,你必须编辑几个不同的文件。
我是 serverless-dotenv-plugin 的作者。尝试从提供程序或其他选项动态加载 env 文件时出现逻辑问题。不过,我已经更新了插件,以便您可以根据设置的环境动态加载 env 文件。
例如,如果您 运行 "NODE_ENV=production sls deploy" 它将查找名为 .env.production 的文件。如果找不到,它将回退到 .env.
有关详细信息,请参阅自述文件 https://github.com/infrontlabs/serverless-dotenv-plugin