ಒಮ್ಮೆ ವ್ಯಾಖ್ಯಾನಿಸಿ, ಎಲ್ಲೆಡೆ ನಂಬಿಕೆ ಇರಿಸಿ
CtroEnv ನಿಮ್ಮ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್ಗಳನ್ನು (environment variables) ಸುರಕ್ಷಿತವಾಗಿಡಲು ನಾಲ್ಕು ಪ್ರಮುಖ ವ್ಯಾಲಿಡೇಟರ್ ಫ್ಯಾಕ್ಟರಿಗಳನ್ನು (validator factories) ಬಳಸುತ್ತದೆ.
ಅವು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದು ಇಲ್ಲಿದೆ:
string() ಪಠ್ಯಕ್ಕಾಗಿ (text) ಇದನ್ನು URLಗಳು, ಇಮೇಲ್ಗಳು ಮತ್ತು ಪೋರ್ಟ್ಗಳಿಗಾಗಿ ಬಳಸಿ. ಉದ್ದದ ಮಿತಿಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು ನೀವು .min() ಅಥವಾ .max() ನಂತಹ ನಿಯಮಗಳನ್ನು ಬಳಸಬಹುದು.
number() ಸಂಖ್ಯಾತ್ಮಕ ಮೌಲ್ಯಗಳಿಗಾಗಿ (numeric values) ಇದು "3000" ನಂತಹ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ನೈಜ ಸಂಖ್ಯೆಗಳಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ. ನೀವು ಪೂರ್ಣಾಂಕಗಳನ್ನು (integers) ಅಥವಾ ಧನಾತ್ಮಕ ಮೌಲ್ಯಗಳನ್ನು (positive values) ಕಡ್ಡಾಯಗೊಳಿಸಬಹುದು.
boolean() true ಅಥವಾ false ಗಾಗಿ ಇದು ಫೀಚರ್ ಫ್ಲಾಗ್ಗಳನ್ನು (feature flags) ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದು "true", "1", ಅಥವಾ "false" ಅನ್ನು ನೈಜ ಬೂಲಿಯನ್ಗಳಾಗಿ (booleans) ಪರಿವರ್ತಿಸುತ್ತದೆ.
pick() ನಿರ್ದಿಷ್ಟ ಸೆಟ್ಗಳಿಗಾಗಿ ಮೌಲ್ಯಗಳನ್ನು ಒಂದು ಪಟ್ಟಿಗೆ ಸೀಮಿತಗೊಳಿಸಲು ಇದನ್ನು ಬಳಸಿ. ಉದಾಹರಣೆಗೆ, NODE_ENV ಅನ್ನು ಕೇವಲ "development", "staging", ಅಥವಾ "production" ಆಗಿರಲು ನೀವು ಕಡ್ಡಾಯಗೊಳಿಸಬಹುದು. ನೀವು ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿದರೆ, ದೋಷವು (error) ಸರಿಯಾದ ಕಾಗುಣಿತವನ್ನು ಸೂಚಿಸುತ್ತದೆ.
ಪ್ರತಿ ವ್ಯಾಲಿಡೇಟರ್ಗಾಗಿ ಉಪಯುಕ್ತ ಪರಿಕರಗಳು:
• .default(value) - ವೇರಿಯೇಬಲ್ ಇಲ್ಲದಿದ್ದರೆ ಪರ್ಯಾಯ ಮೌಲ್ಯವನ್ನು (fallback) ನಿಗದಿಪಡಿಸುತ್ತದೆ. • .optional() - ವೇರಿಯೇಬಲ್ ಅನ್ನು undefined ಆಗಿರಲು ಅನುಮತಿಸುತ್ತದೆ. • .secret() - ನಿಮ್ಮ ಲಾಗ್ಗಳಲ್ಲಿ (logs) ಸೂಕ್ಷ್ಮ ಡೇಟಾವನ್ನು ಮರೆಮಾಚುತ್ತದೆ. • .describe(text) - ನಿಮ್ಮ ದೋಷ ಸಂದೇಶಗಳಿಗಾಗಿ (error messages) ಡಾಕ್ಯುಮೆಂಟೇಶನ್ ಅನ್ನು ಸೇರಿಸುತ್ತದೆ. • .validate(fn) - ಏಕೈಕ ನಿಯಮಗಳಿಗಾಗಿ ಕಸ್ಟಮ್ ಲಾಜಿಕ್ (custom logic) ಬರೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
CtroEnv ವಿವಿಧ ಎನ್ವಿರಾನ್ಮೆಂಟ್ಗಳಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- Node.js: .env ಫೈಲ್ಗಳನ್ನು ಓದಲು nodeSource() ಅಥವಾ loadEnv() ಬಳಸಿ.
- Vite: ವೇರಿಯೇಬಲ್ಗಳು ಅಮಾನ್ಯವಾಗಿದ್ದರೆ (invalid) ನಿಮ್ಮ ಬಿಲ್ಡ್ ಅನ್ನು ವಿಫಲಗೊಳಿಸಲು vitePlugin ಬಳಸಿ.
- Next.js: ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು ಅಂತರ್ನಿರ್ಮಿತ ಬೆಂಬಲವನ್ನು (built-in support) ಬಳಸಿ. ಇದು ನೀವು ಅಕಸ್ಮಾತ್ತಾಗಿ ರಹಸ್ಯಗಳನ್ನು (secrets) ಬ್ರೌಸರ್ನಲ್ಲಿ ಬಹಿರಂಗಪಡಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ವ್ಯಾಲಿಡೇಶನ್ ವಿಫಲವಾದಾಗ, CtroEnv ಕೇವಲ ನಿಲ್ಲುವುದಿಲ್ಲ. ಇದು ಪ್ರತಿಯೊಂದು ದೋಷವನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ ಮತ್ತು ಅವೆಲ್ಲವನ್ನೂ ಒಟ್ಟಿಗೆ ತೋರಿಸುತ್ತದೆ. ಯಾವುದೋ ಮಿಸ್ ಆಗಿದೆ, ಯಾವುದರ ಟೈಪ್ ತಪ್ಪಾಗಿದೆ ಮತ್ತು ಯಾವುದು ನಿಮ್ಮ ಕಸ್ಟಮ್ ನಿಯಮಗಳಿಗೆ ವಿಫಲವಾಗಿದೆ ಎಂಬುದರ ಸ್ಪಷ್ಟ ಪಟ್ಟಿಯನ್ನು ನೀವು ಪಡೆಯುತ್ತೀರಿ.
ಇದು ನಿಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಅಬದಲನೀಯವಾಗಿ (immutable) ಮತ್ತು ನಿಮ್ಮ ರನ್ಟೈಮ್ ಅನ್ನು ಮುನ್ಸೂಚನೀಯವಾಗಿ (predictable) ಇರಿಸುತ್ತದೆ.
ಮೂಲ: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl