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