𝗗𝗲𝗳𝗶𝗻𝗶 𝗠𝗮𝗿𝗮 𝗠𝗼𝗷𝗮, 𝗔𝗺𝗶𝗻𝗶 𝗞𝗶𝗹𝗮 𝗠𝗮𝗵𝗮𝗹𝗶
CtroEnv hutumia viwanda vinne vya msingi vya kihakiki (validator factories) ili kuweka vigezo vyako vya mazingira (environment variables) salama.
Hivi ndivyo vinavyofanya kazi:
string() kwa ajili ya maandishi Tumia hii kwa URL, barua pepe, na bandari (ports). Unaweza kuunganisha sheria kama .min() au .max() ili kuweka mipaka ya urefu.
number() kwa ajili ya thamani za nambari Hii inabadilisha maandishi kama "3000" kuwa nambari halisi. Unaweza kulazimisha nambari nzima (integers) au thamani chanya.
boolean() kwa ajili ya kweli (true) au si kweli (false) Hii inashughulikia bendera za vipengele (feature flags). Inabadilisha "true", "1", au "false" kuwa booleans halisi.
pick() kwa ajili ya seti maalum Tumia hii kuzuia thamani kwenye orodha. Kwa mfano, unaweza kulazimisha NODE_ENV iwe tu "development", "staging", au "production". Ukifanya kosa la kimaandishi, kosa hilo litapendekeza tahajia sahihi.
Zana muhimu kwa kila kihakiki (validator):
• .default(value) - Huweka chaguo mbadala ikiwa kigezo hakipo. • .optional() - Inaruhusu kigezo kuwa kisichojulikana (undefined). • .secret() - Huficha data nyeti kwenye kumbukumbu (logs) zako. • .describe(text) - Huongeza maelezo kwa ajili ya ujumbe wako wa makosa. • .validate(fn) - Inakuwezesha kuandika mantiki maalum (custom logic) kwa sheria za mara moja.
CtroEnv hufanya kazi katika mazingira tofauti:
- Node.js: Tumia nodeSource() au loadEnv() kusoma faili za .env.
- Vite: Tumia vitePlugin ili kusimamisha ujenzi (build) wako ikiwa vigezo si sahihi.
- Next.js: Tumia msaada uliomo ndani ili kutenganisha vigezo vya seva na mteja (client). Hii inakuzuia kwa bahati mbaya kufichua siri kwenye kivinjari (browser).
Uhakiki unapofeli, CtroEnv haisimami tu. Inakusanya kila kosa moja moja na kuonyesha yote kwa wakati mmoja. Unapata orodha wazi ya kile kilichokosekana, kile chenye aina isiyo sahihi, na kile kilichofeli sheria zako maalum.
Hii inafanya usanidi wako usioweza kubadilishwa (immutable) na muda wako wa utendaji (runtime) uwe unaotabirika.
Chanzo: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl