Bir Kez Tanımlayın, Her Yerde Güvenin
CtroEnv, ortam değişkenlerinizi güvende tutmak için dört temel doğrulayıcı fabrikası kullanır.
İşte çalışma şekilleri:
string()metinler için Bunu URL'ler, e-postalar ve portlar için kullanın. Uzunluk sınırlarını belirlemek için.min()veya.max()gibi kuralları zincirleme olarak ekleyebilirsiniz.number()sayısal değerler için Bu, "3000" gibi dizeleri gerçek sayılara dönüştürür. Tam sayılar veya pozitif değerler zorunlu kılabilirsiniz.boolean()doğru (true) veya yanlış (false) için Bu, özellik bayraklarını (feature flags) yönetir. "true", "1" veya "false" değerlerini gerçek boolean değerlerine dönüştürür.pick()belirli kümeler için Değerleri bir listeyle kısıtlamak için bunu kullanın. Örneğin,NODE_ENVdeğerinin yalnızca "development", "staging" veya "production" olmasını zorunlu kılabilirsiniz. Bir yazım hatası yaparsanız, hata mesajı doğru yazımı önerir.
Her doğrulayıcı için yararlı araçlar:
• .default(value) - Değişken eksikse bir yedek değer belirler.
• .optional() - Değişkenin undefined olmasına izin verir.
• .secret() - Günlüklerinizdeki (logs) hassas verileri maskeler.
• .describe(text) - Hata mesajlarınız için dokümantasyon ekler.
• .validate(fn) - Tek seferlik kurallar için özel mantık yazmanıza olanak tanır.
CtroEnv farklı ortamlarda çalışır:
- Node.js:
.envdosyalarını okumak içinnodeSource()veyaloadEnv()kullanın. - Vite: Değişkenler geçersizse derleme işleminin (build) başarısız olması için
vitePluginkullanın. - Next.js: Sunucu ve istemci değişkenlerini ayırmak için yerleşik desteği kullanın. Bu, gizli bilgileri yanlışlıkla tarayıcıya sızdırmanızı engeller.
Doğrulama başarısız olduğunda CtroEnv sadece durmaz. Her bir hatayı toplar ve hepsini aynı anda gösterir. Nelerin eksik olduğu, nelerin yanlış tipe sahip olduğu ve nelerin özel kurallarınıza uymadığına dair net bir liste alırsınız.
Bu, yapılandırmanızı değişmez (immutable) ve çalışma zamanınızı (runtime) öngörülebilir kılar.
Kaynak: https://dev.to/ctrotech/define-once-trust-everywhere-ctroenv-deep-dive-3bjl