Yapılandırma
Giriş
Nylo Website v7, güvenli bir ortam yapılandırma sistemi kullanır. Ortam değişkenleriniz bir .env dosyasında saklanır ve ardından uygulamanızda kullanılmak üzere oluşturulan bir Dart dosyasına (env.g.dart) şifrelenir.
Bu yaklaşım şunları sağlar:
- Güvenlik: Ortam değerleri derlenen uygulamada XOR şifrelidir
- Tip güvenliği: Değerler otomatik olarak uygun türlere dönüştürülür
- Derleme zamanlı esneklik: Geliştirme, test ve üretim için farklı yapılandırmalar
.env Dosyası
Proje kökünüzdeki .env dosyası yapılandırma değişkenlerinizi içerir:
# Environment configuration
APP_KEY=your-32-character-secret-key
APP_NAME="My App"
APP_ENV="developing"
APP_DEBUG=true
APP_URL="https://myapp.com"
API_BASE_URL="https://api.myapp.com"
ASSET_PATH="assets"
DEFAULT_LOCALE="en"
Mevcut Değişkenler
| Değişken | Açıklama |
|---|---|
APP_KEY |
Zorunlu. Şifreleme için 32 karakterlik gizli anahtar |
APP_NAME |
Uygulama adınız |
APP_ENV |
Ortam: developing veya production |
APP_DEBUG |
Hata ayıklama modunu etkinleştir (true/false) |
APP_URL |
Uygulamanızın URL'si |
API_BASE_URL |
API istekleri için temel URL |
ASSET_PATH |
Varlıklar klasörünün yolu |
DEFAULT_LOCALE |
Varsayılan dil kodu |
Ortam Yapılandırması Oluşturma
Nylo Website v7, uygulamanızın ortam değerlerine erişebilmesi için şifrelenmiş bir ortam dosyası oluşturmanızı gerektirir.
Adım 1: APP_KEY Oluşturma
Önce güvenli bir APP_KEY oluşturun:
metro make:key
Bu, .env dosyanıza 32 karakterlik bir APP_KEY ekler.
Adım 2: env.g.dart Oluşturma
Şifrelenmiş ortam dosyasını oluşturun:
metro make:env
Bu, şifrelenmiş ortam değişkenlerinizle birlikte lib/bootstrap/env.g.dart dosyasını oluşturur.
Ortamınız uygulamanız başladığında otomatik olarak kaydedilir — main.dart dosyasındaki Nylo.init(env: Env.get, ...) bunu sizin için halleder. Ek bir kurulum gerekmez.
Değişikliklerden Sonra Yeniden Oluşturma
.env dosyanızı değiştirdiğinizde, yapılandırmayı yeniden oluşturun:
metro make:env --force
--force bayrağı mevcut env.g.dart dosyasının üzerine yazar.
Değerleri Alma
Ortam değerlerine erişmenin önerilen yolu config sınıfları aracılığıyladır. lib/config/app.dart dosyanız, ortam değerlerini tipli statik alanlar olarak sunmak için getEnv() kullanır:
// lib/config/app.dart
final class AppConfig {
static final String appName = getEnv('APP_NAME', defaultValue: 'Nylo');
static final String appEnv = getEnv('APP_ENV', defaultValue: 'developing');
static final bool appDebug = getEnv('APP_DEBUG', defaultValue: false);
static final String apiBaseUrl = getEnv('API_BASE_URL');
}
Ardından uygulama kodunuzda değerlere config sınıfı aracılığıyla erişin:
// Anywhere in your app
String name = AppConfig.appName;
bool isDebug = AppConfig.appDebug;
String apiUrl = AppConfig.apiBaseUrl;
Bu kalıp, ortam erişimini config sınıflarınızda merkezileştirir. getEnv() yardımcısı, doğrudan uygulama kodunda değil, config sınıfları içinde kullanılmalıdır.
Config Sınıfları Oluşturma
Üçüncü taraf hizmetler veya özelliğe özgü yapılandırma için Metro kullanarak özel config sınıfları oluşturabilirsiniz:
metro make:config RevenueCat
Bu, lib/config/revenue_cat_config.dart konumunda yeni bir config dosyası oluşturur:
final class RevenueCatConfig {
// Add your config values here
}
Örnek: RevenueCat Yapılandırması
Adım 1: Ortam değişkenlerini .env dosyanıza ekleyin:
REVENUECAT_API_KEY="appl_xxxxxxxxxxxxx"
REVENUECAT_ENTITLEMENT_ID="premium"
Adım 2: Config sınıfınızı bu değerleri referans alacak şekilde güncelleyin:
// lib/config/revenue_cat_config.dart
import 'package:nylo_framework/nylo_framework.dart';
final class RevenueCatConfig {
static final String apiKey = getEnv('REVENUECAT_API_KEY');
static final String entitlementId = getEnv('REVENUECAT_ENTITLEMENT_ID', defaultValue: 'premium');
}
Adım 3: Ortam yapılandırmanızı yeniden oluşturun:
metro make:env --force
Adım 4: Config sınıfını uygulamanızda kullanın:
import '/config/revenue_cat_config.dart';
// Initialize RevenueCat
await Purchases.configure(
PurchasesConfiguration(RevenueCatConfig.apiKey),
);
// Check entitlements
if (entitlement.identifier == RevenueCatConfig.entitlementId) {
// Grant premium access
}
Bu yaklaşım API anahtarlarınızı ve yapılandırma değerlerinizi güvenli ve merkezi tutar, farklı ortamlarda farklı değerleri yönetmeyi kolaylaştırır.
Değişken Türleri
.env dosyanızdaki değerler otomatik olarak ayrıştırılır:
| .env Değeri | Dart Türü | Örnek |
|---|---|---|
APP_NAME="My App" |
String |
"My App" |
DEBUG=true |
bool |
true |
DEBUG=false |
bool |
false |
VALUE=null |
null |
null |
EMPTY="" |
String |
"" (boş metin) |
Ortam Çeşitleri
Geliştirme, test ve üretim için farklı yapılandırmalar oluşturun.
Adım 1: Ortam Dosyaları Oluşturma
Ayrı .env dosyaları oluşturun:
.env # Geliştirme (varsayılan)
.env.staging # Test
.env.production # Üretim
.env.production örneği:
APP_KEY=production-secret-key-here
APP_NAME="My App"
APP_ENV="production"
APP_DEBUG=false
APP_URL="https://myapp.com"
API_BASE_URL="https://api.myapp.com"
Adım 2: Ortam Yapılandırması Oluşturma
Belirli bir ortam dosyasından oluşturun:
# For production
metro make:env --file=".env.production" --force
# For staging
metro make:env --file=".env.staging" --force
Adım 3: Uygulamanızı Derleme
Uygun yapılandırma ile derleyin:
# Development
flutter run
# Production build
metro make:env --file=.env.production --force
flutter build ios
flutter build appbundle
Derleme Zamanlı Enjeksiyon
Daha yüksek güvenlik için, APP_KEY'i kaynak koduna gömmek yerine derleme zamanında enjekte edebilirsiniz.
--dart-define Modu ile Oluşturma
metro make:env --dart-define
Bu, APP_KEY gömmeden env.g.dart oluşturur.
APP_KEY Enjeksiyonu ile Derleme
# iOS
flutter build ios --dart-define=APP_KEY=your-secret-key
# Android
flutter build appbundle --dart-define=APP_KEY=your-secret-key
# Run
flutter run --dart-define=APP_KEY=your-secret-key
Bu yaklaşım APP_KEY'i kaynak kodunuzun dışında tutar ve şunlar için kullanışlıdır:
- Gizli anahtarların enjekte edildiği CI/CD hattı
- Açık kaynak projeler
- Gelişmiş güvenlik gereksinimleri
En İyi Uygulamalar
.envdosyasını asla sürüm kontrolüne eklemeyin -.gitignore'a ekleyin.env-examplekullanın - Hassas değerler olmadan bir şablon kaydedin- Değişikliklerden sonra yeniden oluşturun -
.envdeğiştikten sonra her zamanmetro make:env --forceçalıştırın - Ortam başına farklı anahtarlar - Geliştirme, test ve üretim için benzersiz APP_KEY'ler kullanın