配置
在开发中,我们常常需要妥善管理各种配置信息,例如数据库连接细节、密钥等敏感数据。
通常,我们会将这些配置信息统一存储于工程的/src/config
目录下。像下面这样:
在此基础上,我们可以将配置对象轻松导入到任何需要的地方。我们约定俗成,所有配置对象的名称都以config
为前缀,这样在代码编辑器中输入config
时,就可以迅速找到所有可用的配置选项。
环境
也许我们在不同环境下,需要使用不同的值。例如,在生产环境中(即我们在云服务器上运行),我们可能需要使用内网的数据库连接地址,因为这样速度更快,也更加安全。我们可以通过指定环境来轻松实现这一点。
environment
方法接收一个返回布尔值的方法作为第一个参数,当满足条件时,第二个参数中的对象将与你的配置进行浅层合并。
在上面的例子中,如果你在运行 Milkio 之前,执行了 export NODE_ENV=production
,那么 configExample.foo
将会返回 "qux"
。
修改配置
配置并非是只读的,你可以任意修改配置对象。例如,像 Cloudflare Workers 或者一些其他边缘运行时,它们只有在请求到来时才能得知环境变量中的值,这时,你就可以在你的 /run-cloudflare.ts
或者其他运行时中,将配置对象中的值修改为需要的值。
异步配置
在某些情况下,你可能需要从远程服务器或者数据库、Redis 中获取配置信息。与 .env
这种纯文本形式的配置相比,我们的配置是真实运行在 JavaScript 中的,因此,我们可以直接将配置对象设置为 Promise,或者传入一个自执行方法,来获取配置信息。
环境变量
环境变量是一种普遍的配置方法,但它不具备类型信息,因此我们获取的环境变量值都是字符串形式。为了帮助开发者将这些字符串转换为适当的数据类型,Milkio框架提供了相应的工具函数。这些函数允许你指定一个默认值,以防环境变量未定义时使用。
.env 文件
一些环境支持使用 .env
文件来自动设置环境变量,例如 Bun。
此外,Bun 支持通过指定运行模式来使用不同的 .env
文件,这在本地开发和部署过程中特别有用。默认情况下,Bun会读取 .env
文件。若要在部署时使用另一组环境变量,可以设置环境变量 MODE
为相应的文件名,例如 .env.production
,或者在执行命令时通过 --mode=.env.production
来实现相同的效果。
如果你正在使用 Node.js,dotenv
这个包可以帮助你实现类似的效果。
Milkio配置文件
在创建新工程时,Milkio框架会自动生成一个名为milkio.ts
的配置文件,其中包含了与框架相关的配置选项。你可以根据需要自由修改这些配置,例如调整默认值。
名称 | 环境变量 | 描述 |
---|---|---|
ignorePathLevel | MILKIO_IGNORE_PATH_LEVEL | 忽略路径层级的数量,适用于某些Serverless服务部署时产生的额外路径问题 |
corsAllowMethods | MILKIO_CORS_ALLOW_METHODS | 设置浏览器预检请求允许的方法,默认为* |
corsAllowHeaders | MILKIO_CORS_ALLOW_HEADERS | 设置浏览器预检请求允许的头部,默认为* |
corsAllowOrigin | MILKIO_CORS_ALLOW_ORIGIN | 设置浏览器预检请求允许的源,默认为* |
通过这种方式,我们可以灵活地管理和配置我们的应用程序,确保其在不同环境下的正常运行。