碰见个用Quasar CLI创建的项目,想使用.env文件配置环境变量区分在不同模式中获取的参数,但是他内部并没有读取.env文件的操作也没有对process.env进行扩展,所以另辟蹊径在quasar.config.js对.env文件进行了读取并对环境变量进行扩展。
const path = require("path");
const parseArgs = require("minimist");
const dotenv = require("dotenv");
const { expand } = require("dotenv-expand");
const argv = parseArgs(process.argv.slice(2));
const basePath = path.resolve(__dirname, `.env${argv.ENV_MODE ? `.${argv.ENV_MODE}` : ``}`);
const localPath = `${basePath}.local`;
const loadEnv = envPath => {
try {
const env = dotenv.config({ path: envPath });
expand(env);
} catch (err) {
console.log(err)
}
}
loadEnv(localPath);
loadEnv(basePath);
process 对象提供有关当前 Node.js 进程的信息并对其进行控制。
process.argv 包含启动 Node.js 进程时传入的命令行参数,第一个参数是 node 命令的完整路径,第二个参数是正被执行的文件的完整路径,所有其他的参数从第三个位置开始。
minimist 库可以解析参数选项,但是需要在每个参数名称之前使用双破折号。
dotenv和dotenv-expand库用来扩展process.env,将环境变量从 .env 文件加载到 process.env 中。
欢迎大家留言讨论!!!