یکبار تعریف کنید، همهجا اعتماد کنید
CtroEnv از چهار کارخانه اعتبارسنج (validator factory) اصلی برای ایمن نگه داشتن متغیرهای محیطی شما استفاده میکند.
نحوه عملکرد آنها به این صورت است:
string()برای متن از این برای URLها، ایمیلها و پورتها استفاده کنید. میتوانید قوانینی مانند.min()یا.max()را برای تعیین محدودیت طول زنجیره کنید.number()برای مقادیر عددی این متد رشتههایی مانند "3000" را به اعداد واقعی تبدیل میکند. میتوانید اعداد صحیح یا مقادیر مثبت را اجباری کنید.boolean()برای true یا false این متد پرچمهای ویژگی (feature flags) را مدیریت میکند. مقادیر "true"، "1" یا "false" را به مقادیر بولی (boolean) واقعی تبدیل میکند.pick()برای مجموعههای خاص از این برای محدود کردن مقادیر به یک لیست استفاده کنید. برای مثال، میتوانیدNODE_ENVرا مجبور کنید که فقط شامل "development"، "staging" یا "production" باشد. اگر غلط املایی داشته باشید، خطا املای صحیح را پیشنهاد میدهد.
ابزارهای کاربردی برای هر اعتبارسنج:
• .default(value) - مقدار جایگزین را در صورت نبود متغیر تعیین میکند.
• .optional() - اجازه میدهد متغیر تعریفنشده (undefined) باشد.
• .secret() - دادههای حساس را در لاگهای شما مخفی میکند.
• .describe(text) - مستنداتی برای پیامهای خطای شما اضافه میکند.
• .validate(fn) - به شما اجازه میدهد منطق سفارشی برای قوانین خاص بنویسید.
CtroEnv در محیطهای مختلف کار میکند:
- Node.js: از
nodeSource()یاloadEnv()برای خواندن فایلهای.envاستفاده کنید. - Vite: از
vitePluginاستفاده کنید تا در صورت نامعتبر بودن متغیرها، فرآیند build متوقف شود. - Next.js: از پشتیبانی داخلی برای جداسازی متغیرهای سرور و کلاینت استفاده کنید. این کار از افشای تصادفی اطلاعات حساس (secrets) در مرورگر جلوگیری میکند.
هنگامی که اعتبارسنجی با شکست مواجه میشود، CtroEnv فقط متوقف نمیشود. بلکه تمام خطاها را جمعآوری کرده و همگی را به یکباره نمایش میدهد. شما لیست شفافی از موارد مفقود شده، مواردی با نوع داده اشتباه و مواردی که در قوانین سفارشی شما شکست خوردهاند، دریافت میکنید.
این کار باعث میشود پیکربندی شما تغییرناپذیر (immutable) و زمان اجرا (runtime) شما قابل پیشبینی باقی بماند.
منبع: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl