ఒకసారి నిర్వచించండి, ఎల్లప్పుడూ నమ్మండి
CtroEnv మీ ఎన్విరాన్మెంట్ వేరియబుల్స్ను సురక్షితంగా ఉంచడానికి నాలుగు ప్రధాన వ్యాలిడేటర్ ఫ్యాక్టరీలను (validator factories) ఉపయోగిస్తుంది.
అవి ఎలా పనిచేస్తాయో ఇక్కడ చూడండి:
string()టెక్స్ట్ కోసం URLలు, ఈమెయిల్స్ మరియు పోర్ట్ల కోసం దీనిని ఉపయోగించండి. పొడవు పరిమితులను సెట్ చేయడానికి మీరు.min()లేదా.max()వంటి రూల్స్ను చైన్ చేయవచ్చు.number()సంఖ్యాపరమైన విలువల కోసం ఇది "3000" వంటి స్ట్రింగ్స్ను అసలైన సంఖ్యలుగా మారుస్తుంది. మీరు ఇంటిజర్స్ (integers) లేదా పాజిటివ్ విలువలను తప్పనిసరి చేయవచ్చు.boolean()true లేదా false కోసం ఇది ఫీచర్ ఫ్లాగ్స్ను (feature flags) హ్యాండిల్ చేస్తుంది. ఇది "true", "1", లేదా "false"లను అసలైన బూలియన్లుగా మారుస్తుంది.pick()నిర్దిష్ట సెట్ల కోసం విలువలను ఒక జాబితాకు పరిమితం చేయడానికి దీనిని ఉపయోగించండి. ఉదాహరణకు,NODE_ENVకేవలం "development", "staging", లేదా "production" మాత్రమే ఉండేలా మీరు నియంత్రించవచ్చు. మీరు టైపింగ్ తప్పు చేస్తే, ఎర్రర్ సరైన స్పెల్లింగ్ను సూచిస్తుంది.
ప్రతి వ్యాలిడేటర్కు ఉపయోగపడే సాధనాలు:
• .default(value) - వేరియబుల్ లేనట్లయితే ఒక ఫాల్బ్యాక్ (fallback) సెట్ చేస్తుంది.
• .optional() - వేరియబుల్ అన్డిఫైన్డ్ (undefined) గా ఉండటానికి అనుమతిస్తుంది.
• .secret() - మీ లాగ్స్లో సెన్సిటివ్ డేటాను మాస్క్ చేస్తుంది.
• .describe(text) - మీ ఎర్రర్ మెసేజ్ల కోసం డాక్యుమెంటేషన్ను జోడిస్తుంది.
• .validate(fn) - ప్రత్యేక రూల్స్ కోసం మీరు కస్టమ్ లాజిక్ను వ్రాయడానికి అనుమతిస్తుంది.
CtroEnv వివిధ ఎన్విరాన్మెంట్లలో పనిచేస్తుంది:
- Node.js:
.envఫైల్లను చదవడానికిnodeSource()లేదాloadEnv()ఉపయోగించండి. - Vite: వేరియబుల్స్ చెల్లనివి అయితే మీ బిల్డ్ను ఫెయిల్ చేయడానికి
vitePluginఉపయోగించండి. - Next.js: సర్వర్ మరియు క్లయింట్ వేరియబుల్స్ను వేరు చేయడానికి ఇందులోని బిల్ట్-ఇన్ సపోర్ట్ను ఉపయోగించండి. ఇది పొరపాటున సీక్రెట్స్ను బ్రౌజర్కు ఎక్స్పోజ్ చేయకుండా నిరోధిస్తుంది.
వ్యాలిడేషన్ విఫలమైనప్పుడు, CtroEnv కేవలం ఆగిపోదు. ఇది ప్రతి ఎర్రర్ను సేకరించి, వాటన్నింటినీ ఒకేసారి చూపిస్తుంది. ఏది మిస్ అయింది, దేనికి తప్పు టైప్ ఉంది మరియు ఏవి మీ కస్టమ్ రూల్స్లో విఫలమయ్యాయో తెలిపే స్పష్టమైన జాబితా మీకు లభిస్తుంది.
ఇది మీ కాన్ఫిగరేషన్ను ఇమ్యూటబుల్ (immutable) గా మరియు మీ రన్టైమ్ను ప్రిడిక్టబుల్ (predictable) గా ఉంచుతుంది.
మూలం: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl