Dotenvx和Bun的一些整合样例
· 2 min read
Bun 1.3发布啦,特性太大啦,有点目不暇接,不要TLDR,有精力的同学还是可以看看的,吃不了亏,上不了当。
Bun有对环境变量和.env
文件的默认支持,详细请参考Bun Environment variables
借助这些环境变量,Bun可以快速完成诸如数据库连接、Redis连接、S3连接等操作,非常简单。
如在.env
中中添加以下配置,Bun就会完成默认的数据库连接:
MYSQL_URL="mysql://root:this_is_long_password@localhost:3306/test"
但是保存在.env
文件中的敏感信息都是明文的,这样就会有泄露风险,那么如何结合Dotenvx来保护这些敏感信息呢?
借助dotenvx的软连接特性,执行dotenvx link bin/bun
,这样就会创建一个软连接 ,然后执行./bin/bun demo.ts
,
就会自动加载.env
文件,然后再执行demo.ts文件。
当然你可以可以创建一个bunw
名称的脚本,由该脚本负责调用dotenvx加载.env
文件,然后再执行bun命令也是没有问题的,样例脚本如下:
#!/bin/bash
# load .env by dotenvx
eval $( dotenvx decrypt --stdout --format shell )
# Execute bun command with arguments
exec $HOME/.bun/bin/bun "$@"
#exec $HOME/.deno/bin/deno "$@"
借助软连接和wrapper脚本,你可以非常方便地集成dotenvx的.env
配置,这样我们在Bun中就可以安全地使用.env
文件中的敏感信息,
如数据库、Redis、S3等信息,当然如果涉及到外包调用,各种API Key也都可以加密保存到.env
文件中。
此外Bun还支持通过环境变量BUN_INSPECT_PRELOAD
来指定预加载的脚本文件,该脚本文件会在Bun启动时自动加载,这个和--preload
参数的功能是一致的,
如果在某一项目中,想要统一加载某个脚本文件,这样在.env
文件中添加一下BUN_INSPECT_PRELOAD
配置即可。