ഒരൊറ്റ തവണ നിർവചിക്കുക, എല്ലായിടത്തും വിശ്വസിക്കാം
നിങ്ങളുടെ എൻവയോൺമെന്റ് വേരിയബിളുകൾ (environment variables) സുരക്ഷിതമായി സൂക്ഷിക്കുന്നതിനായി CtroEnv നാല് പ്രധാന വാലിഡേറ്റർ ഫാക്ടറികൾ (validator factories) ഉപയോഗിക്കുന്നു.
അവ എങ്ങനെയാണ് പ്രവർത്തിക്കുന്നത് എന്ന് താഴെ നൽകുന്നു:
string()ടെക്സ്റ്റുകൾക്കായി URL-കൾ, ഇമെയിലുകൾ, പോർട്ടുകൾ എന്നിവയ്ക്കായി ഇത് ഉപയോഗിക്കാം. നീളം പരിമിതപ്പെടുത്തുന്നതിനായി.min()അല്ലെങ്കിൽ.max()പോലുള്ള നിയമങ്ങൾ നിങ്ങൾക്ക് ചേർക്കാം.number()സംഖ്യാ മൂല്യങ്ങൾക്കായി ഇത് "3000" പോലുള്ള സ്ട്രിംഗുകളെ യഥാർത്ഥ സംഖ്യകളാക്കി മാറ്റുന്നു. നിങ്ങൾക്ക് പൂർണ്ണസംഖ്യകളോ (integers) പോസിറ്റീവ് മൂല്യങ്ങളോ നിർബന്ധമാക്കാം.boolean()'true' അല്ലെങ്കിൽ 'false' എന്നിവയ്ക്കായി ഇത് ഫീച്ചർ ഫ്ലാഗുകൾ (feature flags) കൈകാര്യം ചെയ്യുന്നു. ഇത് "true", "1", അല്ലെങ്കിൽ "false" എന്നിവയെ യഥാർത്ഥ ബൂളിയൻ (boolean) മൂല്യങ്ങളാക്കി മാറ്റുന്നു.pick()പ്രത്യേക സെറ്റുകൾക്കായി മൂല്യങ്ങളെ ഒരു ലിസ്റ്റിലേക്ക് പരിമിതപ്പെടുത്താൻ ഇത് ഉപയോഗിക്കാം. ഉദാഹരണത്തിന്,NODE_ENVഎന്നത് "development", "staging", അല്ലെങ്കിൽ "production" എന്നിവയിൽ ഏതെങ്കിലും ഒന്നായിരിക്കണമെന്ന് നിങ്ങൾക്ക് നിർബന്ധിക്കാനാകും. നിങ്ങൾ ടൈപ്പ് ചെയ്യുമ്പോൾ തെറ്റ് വന്നാൽ, ശരിയായ സ്പെല്ലിംഗ് എറർ മെസ്സേജ് നിർദ്ദേശിക്കും.
ഓരോ വാലിഡേറ്ററിനും ഉപയോഗപ്രദമായ ടൂളുകൾ:
• .default(value) - വേരിയബിൾ ലഭ്യമല്ലെങ്കിൽ ഒരു പകരമുള്ള മൂല്യം (fallback) നിശ്ചയിക്കുന്നു.
• .optional() - വേരിയബിൾ 'undefined' ആയിരിക്കാൻ അനുവദിക്കുന്നു.
• .secret() - നിങ്ങളുടെ ലോഗുകളിൽ (logs) സെൻസിറ്റീവ് ഡാറ്റ മറച്ചുവെക്കുന്നു.
• .describe(text) - നിങ്ങളുടെ എറർ മെസ്സേജുകൾക്കായി ഡോക്യുമെന്റേഷൻ ചേർക്കുന്നു.
• .validate(fn) - പ്രത്യേക നിയമങ്ങൾക്കായി കസ്റ്റം ലോജിക് എഴുതാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
CtroEnv വിവിധ എൻവയോൺമെന്റുകളിൽ പ്രവർത്തിക്കുന്നു:
- Node.js:
.envഫയലുകൾ വായിക്കാൻnodeSource()അല്ലെങ്കിൽloadEnv()ഉപയോഗിക്കുക. - Vite: വേരിയബിളുകൾ തെറ്റാണെങ്കിൽ ബിൽഡ് പരാജയപ്പെടാൻ
vitePluginഉപയോഗിക്കുക. - Next.js: സെർവർ, ക്ലയന്റ് വേരിയബിളുകളെ വേർതിരിക്കാൻ ഇതിലെ ഇൻബിൽറ്റ് സപ്പോർട്ട് ഉപയോഗിക്കുക. ഇത് രഹസ്യ വിവരങ്ങൾ (secrets) അബദ്ധവശാൽ ബ്രൗസറിൽ വെളിപ്പെടുന്നത് തടയുന്നു.
വാലിഡേഷൻ പരാജയപ്പെടുമ്പോൾ, CtroEnv വെറുതെ നിൽക്കുകയല്ല ചെയ്യുന്നത്. അത് ഓരോ പിശകും ശേഖരിക്കുകയും അവയെല്ലാം ഒരേസമയം കാണിക്കുകയും ചെയ്യുന്നു. എന്താണ് വിട്ടുപോയത്, ഏതിനാണ് തെറ്റായ ടൈപ്പ്, ഏതാണ് നിങ്ങളുടെ കസ്റ്റം നിയമങ്ങൾ പരാജയപ്പെട്ടത് എന്നതിനെക്കുറിച്ചുള്ള വ്യക്തമായ പട്ടിക നിങ്ങൾക്ക് ലഭിക്കും.
ഇത് നിങ്ങളുടെ കോൺഫിഗറേഷൻ മാറ്റമില്ലാത്തതായും (immutable) റൺടൈം പ്രവചിക്കാവുന്നതായും (predictable) നിലനിർത്തുന്നു.
Source: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl