एक बार परिभाषित करें, हर जगह भरोसा करें
CtroEnv आपके environment variables को सुरक्षित रखने के लिए चार मुख्य validator factories का उपयोग करता है।
वे इस प्रकार काम करते हैं:
string()टेक्स्ट के लिए इसका उपयोग URLs, ईमेल और पोर्ट्स के लिए करें। आप लंबाई की सीमा निर्धारित करने के लिए.min()या.max()जैसे नियमों को चेन (chain) कर सकते हैं।number()संख्यात्मक मानों (numeric values) के लिए यह "3000" जैसे स्ट्रिंग्स को वास्तविक नंबरों में बदल देता है। आप पूर्णांक (integers) या धनात्मक मानों (positive values) को लागू कर सकते हैं।boolean()true या false के लिए यह feature flags को संभालता है। यह "true", "1", या "false" को वास्तविक booleans में बदल देता है।pick()विशिष्ट सेटों के लिए इसका उपयोग मानों को एक सूची तक सीमित करने के लिए करें। उदाहरण के लिए, आपNODE_ENVको केवल "development", "staging", या "production" होने के लिए बाध्य कर सकते हैं। यदि आप टाइपिंग में गलती करते हैं, तो त्रुटि (error) सही स्पेलिंग का सुझाव देती है।
प्रत्येक validator के लिए उपयोगी टूल्स:
• .default(value) - यदि वेरिएबल गायब है तो एक fallback सेट करता है।
• .optional() - वेरिएबल को undefined रहने की अनुमति देता है।
• .secret() - आपके लॉग्स में संवेदनशील डेटा को मास्क (mask) करता है।
• .describe(text) - आपके त्रुटि संदेशों (error messages) के लिए दस्तावेज़ीकरण (documentation) जोड़ता है।
• .validate(fn) - आपको विशिष्ट नियमों के लिए कस्टम लॉजिक लिखने की अनुमति देता है।
CtroEnv विभिन्न वातावरणों (environments) में काम करता है:
- Node.js: .env फ़ाइलों को पढ़ने के लिए
nodeSource()याloadEnv()का उपयोग करें। - Vite: यदि वेरिएबल अमान्य हैं तो अपने बिल्ड को विफल करने के लिए
vitePluginका उपयोग करें। - Next.js: सर्वर और क्लाइंट वेरिएबल्स को अलग करने के लिए बिल्ट-इन सपोर्ट का उपयोग करें। यह आपको गलती से ब्राउज़र पर सीक्रेट्स (secrets) उजागर करने से रोकता है।
जब वैलिडेशन विफल होता है, तो CtroEnv केवल रुकता नहीं है। यह प्रत्येक त्रुटि को इकट्ठा करता है और उन सभी को एक साथ दिखाता है। आपको एक स्पष्ट सूची मिलती है कि क्या गायब है, किसका प्रकार (type) गलत है, और कौन से आपके कस्टम नियमों में विफल रहा।
यह आपके कॉन्फ़िगरेशन को अपरिवर्तनीय (immutable) और आपके रनटाइम को पूर्वानुमेय (predictable) रखता है।
स्रोत: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl