define 𝗢𝗻𝗰𝗲, 𝗧𝗿𝘂𝘀𝘁 𝗘𝘃𝗲𝗿𝘆𝘄𝗵𝗲𝗿𝗲
உங்கள் environment variables-களைப் பாதுகாப்பாக வைத்திருக்க CtroEnv நான்கு முக்கிய validator factories-களைப் பயன்படுத்துகிறது.
அவை எவ்வாறு செயல்படுகின்றன என்பது இதோ:
string()உரைகளுக்காக (text) URL-கள், மின்னஞ்சல்கள் மற்றும் ports ஆகியவற்றிற்கு இதைப் பயன்படுத்தவும். நீள வரம்புகளை நிர்ணயிக்க.min()அல்லது.max()போன்ற விதிகளை நீங்கள் இணைக்கலாம்.number()எண் மதிப்புகளுக்காக இது "3000" போன்ற string-களை உண்மையான எண்களாக மாற்றுகிறது. நீங்கள் முழு எண்கள் (integers) அல்லது நேர்மறை மதிப்புகளை (positive values) கட்டாயமாக்கலாம்.boolean()உண்மை (true) அல்லது பொய் (false) மதிப்புகளுக்காக இது feature flags-களைக் கையாள்கிறது. இது "true", "1", அல்லது "false" ஆகியவற்றை உண்மையான booleans-களாக மாற்றுகிறது.pick()குறிப்பிட்ட தொகுப்புகளுக்காக மதிப்புகளை ஒரு பட்டியலுக்குள் (list) மட்டுப்படுத்த இதைப் பயன்படுத்தவும். உதாரணமாக,NODE_ENVஎன்பது "development", "staging", அல்லது "production" என்று மட்டுமே இருக்க வேண்டும் என நீங்கள் கட்டாயப்படுத்தலாம். நீங்கள் தட்டச்சுப் பிழை (typo) செய்தால், பிழைச் செய்தி சரியான எழுத்துப்பிழையைத் தெரிவிக்கும்.
ஒவ்வொரு validator-க்கும் பயனுள்ள கருவிகள்:
• .default(value) - மாறி (variable) இல்லையென்றால் ஒரு மாற்று மதிப்பை (fallback) அமைக்கிறது.
• .optional() - மாறியை undefined ஆக இருக்க அனுமதிக்கிறது.
• .secret() - உங்கள் logs-களில் முக்கியமான தரவுகளை மறைக்கிறது (masks).
• .describe(text) - உங்கள் பிழைச் செய்திகளுக்கான ஆவணங்களை (documentation) சேர்க்கிறது.
• .validate(fn) - தனிப்பயனாக்கப்பட்ட விதிகளுக்கான (custom logic) தர்க்கத்தை எழுத அனுமதிக்கிறது.
CtroEnv பல்வேறு சூழல்களில் (environments) செயல்படுகிறது:
- Node.js: .env கோப்புகளைப் படிக்க
nodeSource()அல்லதுloadEnv()ஆகியவற்றைப் பயன்படுத்தவும். - Vite: மாறிகள் தவறாக இருந்தால் உங்கள் build தோல்வியடைய
vitePlugin-ஐப் பயன்படுத்தவும். - Next.js: server மற்றும் client மாறிகளைப் பிரிக்க இதில் உள்ள வசதியைப் பயன்படுத்தவும். இது secrets-களைத் தெரியாமல் உலாவியில் (browser) வெளிப்படுத்துவதைத் தடுக்கிறது.
validation தோல்வியடையும் போது, CtroEnv அப்படியே நின்றுவிடுவதில்லை. இது ஒவ்வொரு பிழையையும் சேகரித்து அனைத்தையும் ஒரே நேரத்தில் காட்டுகிறது. எது விடுபட்டுள்ளது, எது தவறான வகையைக் (wrong type) கொண்டுள்ளது மற்றும் எது உங்கள் தனிப்பயன் விதிகளில் தோல்வியடைந்தது என்பதற்கான தெளிவான பட்டியலைப் பெறலாம்.
இது உங்கள் உள்ளமைப்பை (configuration) மாற்ற முடியாததாகவும் (immutable), உங்கள் runtime-ஐக் கணிக்கக்கூடியதாகவும் (predictable) வைக்கிறது.
ஆதாரம்: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl