在前端开发过程中,我们常常用到 .env 文件来存储敏感信息和配置项。但是如果等到部署代码到服务器的时候才开始去处理这些信息,会比较麻烦。而 npm 包 @blakedy/dotenv-extended 则是一个很好的解决方案,它可以帮助我们在代码中轻松使用配置项。
简介
@blakedy/dotenv-extended 是一个可以从 .env 文件中读取配置项的 Node.js 模块,它提供了多种配置项类型,包括字符串、数字、布尔值、正则表达式和 JSON 对象等。除此之外,它还支持环境变量扩展和默认值设置, 它可以轻松地集成到你的项目中。
安装
在使用之前,我们需要将 @blakedy/dotenv-extended 安装到项目中。可以使用 npm 或者 yarn 来安装它。
npm install @blakedy/dotenv-extended --save
yarn add @blakedy/dotenv-extended
使用
要使用 @blakedy/dotenv-extended,我们需要在代码中导入它。
const dotenv = require('@blakedy/dotenv-extended');
然后在 .env 文件中添加配置项。例如:
PORT=8080 HOST=localhost
最后,在代码中使用 dotenv.config() 方法来读取配置项。
dotenv.config(); console.log(process.env.PORT); console.log(process.env.HOST);
结果将输出:
8080 localhost
以上代码将从 .env 文件中读取 PORT 和 HOST 配置项,并将它们作为环境变量的值存储在 process.env 对象中。
环境变量扩展
在实际开发中,我们可能需要在配置项中使用环境变量。例如,我们需要在 .env 文件中定义一些数据库连接信息,但是这些信息可能在不同的环境中有所不同。
@blakedy/dotenv-extended 提供了对环境变量的扩展支持,可以在 .env 文件中使用 $VAR 或者 ${VAR} 来引用环境变量的值。例如,如果我们想在配置文件中使用数据库密码,可以这样做:
DATABASE_PASSWORD=$DATABASE_PASSWORD
然后,在代码中可以这样读取配置项:
dotenv.config(); const dbConfig = { host: process.env.DATABASE_HOST, port: process.env.DATABASE_PORT, user: process.env.DATABASE_USER, password: process.env.DATABASE_PASSWORD, };
在读取 DATABASE_PASSWORD 配置项的值时,它将被替换为环境变量 $DATABASE_PASSWORD 的值。
默认值设置
@blakedy/dotenv-extended 还支持在 .env 文件中设置默认值。例如,我们可以在 .env 文件中这样定义:
DATABASE_HOST=localhost DATABASE_PORT=3306 DATABASE_USER=root DATABASE_PASSWORD=
这里我们将数据库密码的值设置为空字符串。当读取该配置项的值时,如果没有对应的环境变量或没有在 .env 文件中设置值,则该配置项的值将为默认值。
dotenv.config(); const dbConfig = { host: process.env.DATABASE_HOST, port: process.env.DATABASE_PORT, user: process.env.DATABASE_USER, password: process.env.DATABASE_PASSWORD || 'password', };
在上面的代码中,当没有设置 DATABASE_PASSWORD 时,默认值为 'password'。
多种配置项类型
@blakedy/dotenv-extended 支持多种类型的配置项,包括字符串、数字、布尔值、正则表达式和 JSON 对象等。
字符串
在 .env 文件中,字符串配置项的值必须加引号。例如:
DB_NAME='myDatabase'
然后,在代码中可以这样读取该配置项的值:
dotenv.config(); const dbName = process.env.DB_NAME;
数字
数字配置项的值可以不加引号。例如:
SERVER_PORT=8080
然后,在代码中可以这样读取该配置项的值:
dotenv.config(); const serverPort = parseInt(process.env.SERVER_PORT, 10);
在读取数字类型的配置项时,需要注意将其转换为正确的数据类型。
布尔值
布尔值配置项的值可以是 true 或 false,不区分大小写。例如:
LOG_ERRORS=true
然后,在代码中可以这样读取该配置项的值:
dotenv.config(); const logErrors = process.env.LOG_ERRORS === 'true';
正则表达式
@blakedy/dotenv-extended 还支持从 .env 文件中读取正则表达式。在 .env 文件中,正则表达式需要用斜杠包含起来,以区别于字符串类型的配置项。
REGEX=/^https?:\/\/([\w\d]+\.)?example\.com/
然后,在代码中可以这样读取该配置项的正则表达式:
dotenv.config(); const regex = new RegExp(process.env.REGEX);
JSON 对象
@blakedy/dotenv-extended 也支持读取 JSON 对象类型的配置项。在 .env 文件中,JSON 对象需要用单引号包含起来,并使用 JSON.stringify() 方法来将其转换为字符串。
MY_OBJECT='{"name": "John", "age": 30}'
然后,在代码中可以这样读取该配置项的 JSON 对象:
dotenv.config(); const myObject = JSON.parse(process.env.MY_OBJECT);
在读取 JSON 对象类型的配置项时,需要将其转换为正确的数据类型。
总结
@blakedy/dotenv-extended 是一个很方便易用的 Node.js 模块,可以让我们轻松地在代码中读取 .env 文件中的配置项。它支持多种数据类型和环境变量扩展,还可以设置默认值,非常适合用于管理敏感信息和配置项。在实际项目中推荐使用该模块,可以有效地提高代码的可维护性和在不同环境下的灵活性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/112278