dotenvx؛ فایلهای env رمزنگاریشده که همهجا کار میکنن
خلاصهٔ کاملتر
به گفتهٔ مخزنش، dotenvx یه نسخهٔ امن از کتابخونهٔ خیلی محبوب dotenv — از همون سازنده — هست که سهتا وعده داره: اجرا رو هر پلتفرمی (cross-platform)، پشتیبانی از چند محیط، و env رمزنگاریشده. میتونی مثل خود dotenv توی کد ازش استفاده کنی، یا سراسری نصبش کنی تا برای هر زبان و فریمورک و پلتفرمی کار کنه.
هستهٔ ایده اینه که بهجای اینکه هر زبان روش خودش env رو بخونه، dotenvx متغیرها رو به پروسه تزریق میکنه. کافیه دستورت رو بعد از dotenvx run -- بذاری تا مقادیر .env توی process.env (یا معادلش تو هر زبونی) در دسترس باشه:
$ node index.js
Hello undefined # بدون dotenvx
$ dotenvx run -- node index.js
Hello Dotenvx # با dotenvxبرای چند محیط، هر محیط فایل خودشو داره (مثل .env.production) و با فلگ -f بارگذاری میشه؛ حتی میشه چند فایل رو با هم داد. طبق قرارداد قدیمی، فایلهای بعدی مقدارهای قبلی رو بازنویسی نمیکنن مگه اینکه فلگ --overload رو بدی. فلگهای --verbose و --debug هم برای دیدن دقیق اینکه چی از کجا تزریق شده هستن.
مهمترین قابلیت اما رمزنگاریه. با یه دستور dotenvx encrypt یه جفت کلید ساخته میشه: یه DOTENV_PUBLIC_KEY برای رمزنگاری و یه DOTENV_PRIVATE_KEY برای رمزگشایی — با همون رمزنگاری کلید عمومی که بیتکوین (منحنی secp256k1) استفاده میکنه. کلید عمومی توی خود فایل .env میمونه و مقادیر رمز میشن، پس میتونی فایل رمزشده رو با خیال راحت کامیت کنی؛ فقط کلید خصوصی — که بیرون از مخزن نگه داشته میشه — میتونه بازش کنه. تو production کافیه DOTENV_PRIVATE_KEY رو ست کنی.
نویسنده به یه نکتهٔ تازه هم اشاره میکنه: محافظت از .env.keys در برابر ایجنتها. چون بعد از رمزنگاری کلید عمومی توی خود فایل .env قرار میگیره، ایجنتها و اتوماسیون میتونن بدون خوندن .env.keys همچنان dotenvx set و dotenvx encrypt رو اجرا کنن؛ یعنی میشه فایل کلیدها رو برای ایجنتها غیرقابلخوندن کرد ولی همچنان اجازه داد مقادیر رمزشده رو امن بهروز کنن.
نکات کلیدی:
- dotenvx نسخهٔ امن dotenv از همون سازندهست: اجرا رو هر زبان/پلتفرمی، چند محیط، و env رمزنگاریشده.
- با dotenvx run -- متغیرها به پروسه تزریق میشن، پس مستقل از زبونه.
- dotenvx encrypt با رمزنگاری کلید عمومی (secp256k1) فایل رو قفل میکنه؛ کلید عمومی توی فایل میمونه و فقط کلید خصوصی رمزگشایی میکنه — پس فایل رمزشده امن قابلکامیته.
- میشه .env.keys رو برای ایجنتها غیرقابلخوندن کرد ولی همچنان اجازهٔ بهروزرسانی امن مقادیر رو داد.




