Dotenvx各语言SDK大小,是SDK集成,还是wrapper脚本启动?
· 2 min read
dotenvx-rs非常轻巧,大小目前在4M左右,鉴于使用Rust编写,虽然功能多,但是编译后体积还是比较小巧的, 在Ops运维、脚本集成等方面,优势都非常明显。
但是在日常开发中,大家还是比较喜欢实用SDK方式,如dotenv,基本上都是通过SDK集成的方式来加载配置的。
.env
文件格式非常简单,基本上就是KEY=VALUE
的格式,所以其对应各语言SDK也都非常轻巧,基本上都在20K以下。
但是dotenvx就有些不同啦,除了要解析.env
文件外,还要进行解密操作,所以各语言SDK的体积就大非常多,
这里列举一下各语言Dotenvx SDK的体积,供大家参考:
- Node.js: 405K after esbuild bundle
- Python: 6.5M
- Golang: 2.9M
- Rust: 1.5M
- Java: 8.5M(bcprov-jdk18on-1.81.jar, dotenv-java)
这里做一个简单的分析:
- dotenvx node.js: 体积确实大非常多,有时一个Hono.js的应用bundle后也就100到200K,结果一个dotenvx就有405K,确实有点不划算
- Python: 6.5M,由于涉及到一些加密开发包,,所以体积比较大
- Golang: 2.9M,虽然最简单的Golang程序编译后也有2M左右,但是增加了2.9M,还是有点大的
- Rust: 1.5M,Rust应用体积本来就小,所以增加的1.5M,其实也不小啦,考虑到1.5M也不太大,情感上还能接受
- Java: 主要是引入了Bouncy Castle,所以体积比较大,如果你程序本身就使用到Bouncy Castle,那么这个体积就无所谓啦
做一个小的总结:
- Node.js和Python应用,体积增加的有点大,鉴于还是通过命令行和wrapper脚本方式集成dotenvx,可以参考Dotenvx完善Python和Node.js的支持,让.env加密特性使用更简单。
- Java: 考虑到Java应用本身就比较大,加之需要的内存比较多,此外Java也并不支持覆盖环境变量,如果应用还是用到Bouncy Castle,那么选择dotenvx Java SDK完全没有问题
- Golang和Rust: 对比应用本身的文件大小,增加的其实也不小,但是考量到增加的体积并不大,所以SDK也能接受,当然通过wrapper脚本方式启动,也是没有问题的,看个人喜好。