कॉन्फ़िगरेशन
परिचय
Nylo Website v7 एक सुरक्षित एनवायरनमेंट कॉन्फ़िगरेशन सिस्टम का उपयोग करता है। आपके एनवायरनमेंट वेरिएबल्स एक .env फ़ाइल में संग्रहीत होते हैं और फिर आपके ऐप में उपयोग के लिए एक जेनरेटेड Dart फ़ाइल (env.g.dart) में एन्क्रिप्ट किए जाते हैं।
यह दृष्टिकोण प्रदान करता है:
- सुरक्षा: एनवायरनमेंट वैल्यूज़ कम्पाइल्ड ऐप में XOR-एन्क्रिप्टेड होती हैं
- टाइप सेफ्टी: वैल्यूज़ स्वचालित रूप से उपयुक्त टाइप्स में पार्स होती हैं
- बिल्ड-टाइम लचीलापन: डेवलपमेंट, स्टेजिंग और प्रोडक्शन के लिए अलग-अलग कॉन्फ़िगरेशन
.env फ़ाइल
आपके प्रोजेक्ट रूट पर .env फ़ाइल में आपके कॉन्फ़िगरेशन वेरिएबल्स होते हैं:
# 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"
उपलब्ध वेरिएबल्स
| वेरिएबल | विवरण |
|---|---|
APP_KEY |
आवश्यक। एन्क्रिप्शन के लिए 32-कैरेक्टर सीक्रेट की |
APP_NAME |
आपके एप्लिकेशन का नाम |
APP_ENV |
एनवायरनमेंट: developing या production |
APP_DEBUG |
डिबग मोड सक्षम करें (true/false) |
APP_URL |
आपके ऐप का URL |
API_BASE_URL |
API अनुरोधों के लिए बेस URL |
ASSET_PATH |
एसेट्स फ़ोल्डर का पाथ |
DEFAULT_LOCALE |
डिफ़ॉल्ट भाषा कोड |
एनवायरनमेंट कॉन्फ़िग जेनरेट करना
Nylo Website v7 के लिए आपको अपने ऐप के env वैल्यूज़ तक पहुँचने से पहले एक एन्क्रिप्टेड एनवायरनमेंट फ़ाइल जेनरेट करनी होगी।
चरण 1: APP_KEY जेनरेट करें
सबसे पहले, एक सुरक्षित APP_KEY जेनरेट करें:
metro make:key
यह आपकी .env फ़ाइल में एक 32-कैरेक्टर APP_KEY जोड़ता है।
चरण 2: env.g.dart जेनरेट करें
एन्क्रिप्टेड एनवायरनमेंट फ़ाइल जेनरेट करें:
metro make:env
यह आपके एन्क्रिप्टेड एनवायरनमेंट वेरिएबल्स के साथ lib/bootstrap/env.g.dart बनाता है।
जब आपका ऐप शुरू होता है तब आपका env स्वचालित रूप से पंजीकृत हो जाता है — main.dart में Nylo.init(env: Env.get, ...) यह आपके लिए हैंडल करता है। कोई अतिरिक्त सेटअप की आवश्यकता नहीं है।
बदलावों के बाद पुनः जेनरेट करना
जब आप अपनी .env फ़ाइल को संशोधित करें, तो कॉन्फ़िग को पुनः जेनरेट करें:
metro make:env --force
--force फ्लैग मौजूदा env.g.dart को ओवरराइट करता है।
वैल्यूज़ प्राप्त करना
एनवायरनमेंट वैल्यूज़ तक पहुँचने का अनुशंसित तरीका config क्लासेज़ के माध्यम से है। आपकी lib/config/app.dart फ़ाइल env वैल्यूज़ को टाइप्ड स्टैटिक फ़ील्ड्स के रूप में एक्सपोज़ करने के लिए getEnv() का उपयोग करती है:
// 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');
}
फिर अपने ऐप कोड में, config क्लास के माध्यम से वैल्यूज़ एक्सेस करें:
// Anywhere in your app
String name = AppConfig.appName;
bool isDebug = AppConfig.appDebug;
String apiUrl = AppConfig.apiBaseUrl;
यह पैटर्न env एक्सेस को आपकी config क्लासेज़ में केंद्रीकृत रखता है। getEnv() हेल्पर का उपयोग सीधे ऐप कोड में करने के बजाय config क्लासेज़ के अंदर किया जाना चाहिए।
कॉन्फ़िग क्लासेज़ बनाना
आप Metro का उपयोग करके थर्ड-पार्टी सेवाओं या फ़ीचर-विशिष्ट कॉन्फ़िगरेशन के लिए कस्टम config क्लासेज़ बना सकते हैं:
metro make:config RevenueCat
यह lib/config/revenue_cat_config.dart पर एक नई config फ़ाइल बनाता है:
final class RevenueCatConfig {
// Add your config values here
}
उदाहरण: RevenueCat कॉन्फ़िगरेशन
चरण 1: अपनी .env फ़ाइल में एनवायरनमेंट वेरिएबल्स जोड़ें:
REVENUECAT_API_KEY="appl_xxxxxxxxxxxxx"
REVENUECAT_ENTITLEMENT_ID="premium"
चरण 2: इन वैल्यूज़ को रेफ़रेंस करने के लिए अपनी config क्लास अपडेट करें:
// 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');
}
चरण 3: अपनी एनवायरनमेंट कॉन्फ़िग पुनः जेनरेट करें:
metro make:env --force
चरण 4: अपने ऐप में config क्लास का उपयोग करें:
import '/config/revenue_cat_config.dart';
// Initialize RevenueCat
await Purchases.configure(
PurchasesConfiguration(RevenueCatConfig.apiKey),
);
// Check entitlements
if (entitlement.identifier == RevenueCatConfig.entitlementId) {
// Grant premium access
}
यह दृष्टिकोण आपकी API कीज़ और कॉन्फ़िगरेशन वैल्यूज़ को सुरक्षित और केंद्रीकृत रखता है, जिससे विभिन्न एनवायरनमेंट्स में अलग-अलग वैल्यूज़ प्रबंधित करना आसान हो जाता है।
वेरिएबल टाइप्स
आपकी .env फ़ाइल में वैल्यूज़ स्वचालित रूप से पार्स होती हैं:
| .env वैल्यू | Dart टाइप | उदाहरण |
|---|---|---|
APP_NAME="My App" |
String |
"My App" |
DEBUG=true |
bool |
true |
DEBUG=false |
bool |
false |
VALUE=null |
null |
null |
EMPTY="" |
String |
"" (खाली स्ट्रिंग) |
एनवायरनमेंट फ्लेवर्स
डेवलपमेंट, स्टेजिंग और प्रोडक्शन के लिए अलग-अलग कॉन्फ़िगरेशन बनाएँ।
चरण 1: एनवायरनमेंट फ़ाइलें बनाएँ
अलग-अलग .env फ़ाइलें बनाएँ:
.env # Development (default)
.env.staging # Staging
.env.production # Production
.env.production का उदाहरण:
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"
चरण 2: एनवायरनमेंट कॉन्फ़िग जेनरेट करें
किसी विशिष्ट env फ़ाइल से जेनरेट करें:
# For production
metro make:env --file=".env.production" --force
# For staging
metro make:env --file=".env.staging" --force
चरण 3: अपना ऐप बिल्ड करें
उपयुक्त कॉन्फ़िगरेशन के साथ बिल्ड करें:
# Development
flutter run
# Production build
metro make:env --file=.env.production --force
flutter build ios
flutter build appbundle
बिल्ड-टाइम इंजेक्शन
बेहतर सुरक्षा के लिए, आप APP_KEY को सोर्स कोड में एम्बेड करने के बजाय बिल्ड टाइम पर इंजेक्ट कर सकते हैं।
--dart-define मोड के साथ जेनरेट करें
metro make:env --dart-define
यह APP_KEY को एम्बेड किए बिना env.g.dart जेनरेट करता है।
APP_KEY इंजेक्शन के साथ बिल्ड करें
# 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
यह दृष्टिकोण APP_KEY को आपके सोर्स कोड से बाहर रखता है, जो इनके लिए उपयोगी है:
- CI/CD पाइपलाइन जहाँ सीक्रेट्स इंजेक्ट किए जाते हैं
- ओपन सोर्स प्रोजेक्ट्स
- बेहतर सुरक्षा आवश्यकताएँ
सर्वोत्तम प्रथाएँ
- कभी भी
.envको वर्शन कंट्रोल में कमिट न करें - इसे.gitignoreमें जोड़ें .env-exampleका उपयोग करें - संवेदनशील वैल्यूज़ के बिना एक टेम्पलेट कमिट करें- बदलावों के बाद पुनः जेनरेट करें -
.envको संशोधित करने के बाद हमेशाmetro make:env --forceचलाएँ - प्रति एनवायरनमेंट अलग कीज़ - डेवलपमेंट, स्टेजिंग और प्रोडक्शन के लिए यूनिक APP_KEY उपयोग करें