Bir ortam değişkeni, bir işlemin çalıştığı ortam hakkında bilgi sağlar. Sunucu bağlantı noktalarını ve veritabanı bağlantılarını yapılandırır, API anahtarları gibi hassas verileri gizler ve çok daha fazlasını yapar.
NestJS’nin ortam değişkenlerini okuma yöntemi, NodeJS’nin standart dotenv paketinden farklıdır.
NestJS yapılandırma modülü, ortam değişkenlerinizi yalnızca birkaç adımda yönetmenize olanak tanır.
1. Adım: Bağımlılıkları Yükleme
NestJS , başlık altında dotenv paketini kullanan özel bir @nestjs/config paketi sağlar. Bu sıfır bağımlılık paketi, ortam değişkenlerini bir .env dosyasından process.env dosyasına yükler . process.env nesnesi, uygulamanızın kullanımı için çalışma zamanında eklenen genel bir değişkendir.
Aşağıdakileri çalıştırarak NestJS yapılandırma paketini kurun:
npm install @nestjs/config
NestJS yapılandırma paketi, uygulamaya bir yapılandırma modülü ve bir yapılandırma hizmeti sunarak çalışır. Yapılandırma modülü , uygulamanın okuyacağı .env dosyasını belirtir. Aynı zamanda yapılandırma hizmeti, .env dosyasının içindeki bilgileri uygulamanın geri kalanına gösterir.
2. Adım: ENV Dosyaları Oluşturma
Ortam değişkenlerini bir dosyada saklamak, onlara farklı işletim sistemlerinde herhangi bir dilden kolayca erişmenizi sağlar. Bu .env dosyalarının sürüm denetimini yapabilirsiniz, böylece proje taşınabilirliğini artırır ve hata ayıklama sorunlarını kolaylaştırabilirler.
.env dosyaları oluşturmaya yönelik NestJS yaklaşımı, resmi dotenv tavsiyesinden farklıdır. dotenv belgelerine göre, bir uygulamada birden fazla .env dosyası oluşturmamalısınız. NestJS, farklı adlara sahip birden çok .env dosyası oluşturmanıza olanak tanır.
İyi bir uygulama olarak, her zaman projenizin kök dizininde .env dosyaları oluşturmalı ve bunları .gitignore dosyanıza dahil etmelisiniz.
.env dosyası oluşturmanın özel bir yolu yoktur; bunları oluşturup normal metin düzenleyicinizle düzenlemeniz yeterlidir; ancak .env ile başlamaları gerekir. Örneğin, .env.development .
3. Adım: Config Modülünü Kurma
Config Modülünüzü global olarak kurmak ve .env yollarını belirlemek için aşağıdaki adımı izleyin :
Projenizin kök modülü ( app.modue.ts ) dosyasında, @nestjs/config adresinden ConfigModule’ü içe aktarın .
Imports dizinize ConfigModule ekleyin ve üzerinde forRoot yöntemini çağırın.
isGlobal özelliği true olacak şekilde forRoot yöntemine bir yapılandırma nesnesi iletin . Bu seçenek, yapılandırmayı uygulamanızdaki diğer modüller aracılığıyla paylaşır, bu da onu bir kereden fazla kurmanız gerekmediği anlamına gelir.
EnvFilePath’inizi yapılandırma nesnenizde belirtin . Bu özellik, bir dize (bir .env dosyanız varsa) veya tüm .env dosyalarınızı içeren bir dizi olabilir ve yapılandırma modülüne hangi dosyaların aranacağını söyler.
// app.module.ts
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ‘Name(s) of your .env file(s)’,
}),
4. Adım: Ortam Değişkenlerini Okumak için Yapılandırma Hizmetini Kullanma
Yapılandırma değerlerine erişmek için, ConfigService’i @ nestjs/config adresinden içe aktararak başlayın . Özel bir değişken bildirerek ve türü olarak ConfigService’i atayarak sınıfın yapıcısına enjekte edin .
Örneğin:
constructor(private config: ConfigService) {}
Bir değişkene erişmek için özel değişkeninizdeki ConfigService’teki get yöntemini çağırın. Genel olarak ihtiyaç duyduğunuz veri türünü ve erişmek istediğiniz ortam değişkeninin adını iletin.
Örneğin:
const envVar = this.config.get<string>(‘ENV_VALUE’);
ConfigService , “ENV_VALUE” adlı bir değer arar ve değerini döndürür.
İki .env dosyası aynı özellik adını içeriyorsa, envFilePath’te belirtilen ilk dosyanın öncelikli olacağını unutmayın.
Ortam Değişkenlerinin Önemi
Ortam değişkenleri, özellikle daha karmaşık uygulamalarda, bir programın önemli bir parçasıdır. Anlaşılması kolay, ortak bir mekanizma aracılığıyla programınızın yapılandırmasını kontrol etmenize izin verirler.
Yapılandırmanın tüm yönlerini kontrol etmek için ortam değişkenlerini kullanabilirsiniz. Farklı veritabanı ayarlarından API anahtarları ve kimlik bilgileri gibi hassas verilere kadar, temeldeki kaynak koduna dokunmadan yapılandırmayı değiştirmenize izin verirler.