Node.js İle Nodemon Kullanarak Canlı Sunucu Yenileme Sistemi Nasıl Yapılır?

Node.js İle Nodemon Kullanarak Canlı Sunucu Yenileme Sistemi Nasıl Yapılır?
Node.js İle Nodemon Kullanarak Canlı Sunucu Yenileme Sistemi Nasıl Yapılır?

Gereksinimler ve Ön Hazırlık

Projeye başlamadan önce bilgisayarınızda güncel bir Node.js sürümünün kurulu olması gerekmektedir. 2026 yılı itibarıyla en az Node.js 22.x veya üzeri bir sürüm kullanmanızı öneririm. Kurulumu doğrulamak için terminalinizde şu komutu çalıştırabilirsiniz:

node -v
npm -v

Ayrıca, bir proje klasörü oluşturup içerisinde package.json dosyasını başlatmanız gerekir. Projenizin kök dizininde terminali açarak şu komutları sırasıyla uygulayın:

mkdir node-canli-sunucu
cd node-canli-sunucu
npm init -y

Bu komutlar, projeniz için gerekli olan temel yapılandırma dosyasını oluşturacaktır. Artık Nodemon kurulumuna geçebiliriz.

Nodemon Kurulumu ve İlk Yapılandırma

Nodemon, genellikle geliştirme ortamında (development) kullanılan bir araçtır. Bu nedenle projeye devDependencies (sadece geliştirme aşamasında kullanılan bağımlılıklar) olarak eklenmesi en doğru yaklaşımdır. Bu, üretim ortamında (production) gereksiz paketlerin yüklenmesini engeller.

npm install --save-dev nodemon

Kurulum tamamlandıktan sonra, package.json dosyanızın devDependencies kısmında nodemon'u görebilirsiniz. Artık sunucunuzu başlatmak için manuel node app.js komutu yerine, Nodemon'un gücünden faydalanabiliriz.

Canlı Yenileme İçin Script Tanımlama

Geliştirme sürecini kolaylaştırmak adına package.json dosyasındaki scripts bölümünü düzenlememiz gerekir. Bu, uzun komutları hatırlamak yerine kısa bir komutla sunucuyu başlatmanızı sağlar.

{
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js"
  }
}

Burada npm run dev komutu, Nodemon'u tetikleyerek app.js dosyasını izlemeye başlar. Herhangi bir değişiklikte sunucu otomatik olarak yeniden başlatılır.

Temel Bir Express Sunucusu Oluşturma

Nodemon'un nasıl çalıştığını gözlemlemek için basit bir Express sunucusu kuralım. Öncelikle Express paketini yükleyin:

npm install express

Ardından app.js adında bir dosya oluşturun ve içine şu kodları ekleyin:

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
    res.send('Canlı sunucu yenileme sistemi aktif!');
});

app.listen(PORT, () => {
    console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor.`);
});

Bu kod bloğu, 3000 portunda basit bir HTTP sunucusu başlatır. Şimdi terminalde npm run dev komutunu çalıştırın ve tarayıcınızdan http://localhost:3000 adresine gidin.

Nodemon Yapılandırma Dosyası (nodemon.json) Kullanımı

Projeniz büyüdükçe, sadece belirli dosyaları izlemek veya bazı klasörleri (örneğin logs veya uploads) göz ardı etmek isteyebilirsiniz. Bunun için kök dizinde nodemon.json adında bir yapılandırma dosyası oluşturmak en temiz yöntemdir.

{
  "watch": ["src/"],
  "ext": "js,json,html",
  "ignore": ["node_modules/", "test/"],
  "delay": "1000"
}

Bu yapılandırma, Nodemon'a sadece src/ klasöründeki .js, .json ve .html uzantılı dosyaları izlemesini söyler. delay parametresi ise, dosya kaydedildikten sonra sunucunun kaç milisaniye bekleyip yeniden başlatılacağını belirler.

Kritik Uyarı: Nodemon kesinlikle üretim (production) ortamında kullanılmamalıdır. Üretim ortamında sunucuyu yönetmek için PM2 veya Docker gibi süreç yöneticileri tercih edilmelidir. Nodemon, sadece geliştirme sürecindeki hızı artırmak için tasarlanmıştır.

Nodemon ve Geleneksel Yöntemlerin Karşılaştırması

Aşağıdaki tablo, Nodemon kullanımının manuel yöntemlerle karşılaştırmasını özetlemektedir:

Özellik Manuel (node app.js) Nodemon
Değişiklik Algılama Yok Otomatik
Yeniden Başlatma Manuel (Ctrl+C ve tekrar başlat) Otomatik
Geliştirme Hızı Düşük Yüksek
Üretim Uygunluğu Evet Hayır

Sıkça Sorulan Sorular

Nodemon neden değişiklikleri algılamıyor?

Nodemon'un izlediği dosya uzantılarını veya klasörleri nodemon.json dosyasında yanlış tanımlamış olabilirsiniz. Ayrıca, dosya sisteminizdeki kısıtlamalar bazen "polling" modunu gerektirebilir; bu durumda nodemon -L app.js komutunu deneyebilirsiniz.

Nodemon'u global mi yoksa yerel mi kurmalıyım?

Proje bazlı bağımlılık yönetimi için yerel (local) kurulum her zaman daha güvenlidir. Bu sayede projenin farklı geliştiricilerde aynı çalışma ortamına sahip olmasını sağlarsınız.

Çok fazla dosya değişikliği olduğunda sunucu sürekli çöküyor, ne yapmalıyım?

nodemon.json içerisindeki delay süresini artırarak (örneğin 2000ms) dosyaların kaydedilme sürecinin tamamlanmasını bekleyebilirsiniz.

Nodemon ile TypeScript kullanabilir miyim?

Evet, ts-node ile birlikte kullanarak TypeScript dosyalarını da Nodemon ile canlı olarak izleyebilir ve çalıştırabilirsiniz.

Nodemon'u durdurmak için ne yapmalıyım?

Terminalde Ctrl + C tuş kombinasyonunu kullanarak Nodemon sürecini güvenli bir şekilde sonlandırabilirsiniz.

Güvenlik Sorumluluk Reddi: Bu rehberdeki kod örnekleri eğitim amaçlıdır. Canlıya alacağınız projelerde XSS, SQL Injection ve diğer güvenlik açıklarına karşı girdi doğrulama, şifre hashleme (bcrypt kullanarak) ve HTTPS protokollerini kullanmayı ihmal etmeyin.

Nodemon ile İleri Seviye İzleme ve Filtreleme Teknikleri

Nodemon'un varsayılan davranışları çoğu proje için yeterli olsa da, büyük ölçekli uygulamalarda performans sorunları yaşanabilir. Özellikle node_modules klasörü veya log dosyaları gibi sürekli değişen dizinlerin izlenmesi, CPU kullanımını gereksiz yere artırır. Bu durumu yönetmek için nodemon.json dosyasında ignore ve watch parametrelerini optimize etmelisiniz.

Aşağıdaki yapılandırma, yalnızca src klasöründeki .js ve .json dosyalarını izleyerek gereksiz yeniden başlatmaları engeller:

{
  "watch": ["src/"],
  "ext": "js,json",
  "ignore": ["src/**/*.test.js", "src/logs/*"],
  "delay": "1000"
}

Buradaki delay parametresi, dosya değişikliği algılandığında sunucunun yeniden başlaması için beklenecek süreyi milisaniye cinsinden belirler. Çoklu dosya kaydetme işlemlerinde (örneğin IDE'nizin "Auto Save" özelliği açıksa) sunucunun sürekli çökmesini engellemek için bu değeri 1000ms ile 2000ms arasında tutmak oldukça etkilidir.

Nodemon ve Geliştirme Sürecinde Hata Ayıklama (Debugging)

Nodemon kullanırken kodunuzdaki hataları tespit etmek için Node.js'in dahili hata ayıklayıcısını (debugger) Nodemon ile entegre edebilirsiniz. Bu sayede, sunucu her yeniden başladığında hata ayıklama modunu otomatik olarak aktif edebilirsiniz. Bunun için package.json dosyanıza özel bir komut eklemeniz yeterlidir.

Aşağıdaki komut, --inspect bayrağını kullanarak Chrome DevTools veya VS Code Debugger üzerinden uygulamanıza bağlanmanıza olanak tanır:

{
  "scripts": {
    "dev:debug": "nodemon --inspect src/index.js"
  }
}

Bu komutu çalıştırdıktan sonra terminalde Debugger listening on ws://127.0.0.1:9229/... çıktısını görmelisiniz. Ardından:

  • VS Code kullanıyorsanız: "Run and Debug" sekmesine gidin ve "Attach to Node Process" yapılandırmasını seçin.
  • Chrome kullanıyorsanız: Adres çubuğuna chrome://inspect yazarak "Open dedicated DevTools for Node" bağlantısına tıklayın.

Bu yöntem, özellikle karmaşık asenkron işlemlerde veya veritabanı sorgularında yaşanan mantıksal hataları, sunucuyu manuel olarak durdurup başlatmanıza gerek kalmadan canlı ortamda izlemenizi sağlar.

İleri İpucu: Nodemon Olayları (Events) ile Bildirim Alma

Nodemon, yaşam döngüsü boyunca belirli olaylar tetiklendiğinde özel komutlar çalıştırmanıza izin verir. Örneğin, sunucu her yeniden başladığında terminalin temizlenmesini veya bir masaüstü bildirimi gönderilmesini sağlayabilirsiniz. nodemon.json dosyanıza şu satırları ekleyerek süreci özelleştirin:

{
  "events": {
    "restart": "cls || clear && echo 'Sunucu yeniden başlatıldı...'"
  }
}

Bu yapılandırma, her değişiklikte terminal ekranını temizleyerek sadece güncel hata mesajlarını görmenize yardımcı olur ve geliştirme akışınızı çok daha temiz hale getirir.

Sonuç

Node.js ile geliştirme yaparken Nodemon kullanmak, geliştirici deneyimini iyileştiren en temel adımlardan biridir. Bu rehberde, Nodemon kurulumundan gelişmiş yapılandırma dosyası oluşturmaya kadar tüm süreçleri inceledik. Artık kodunuzu her kaydettiğinizde sunucunun otomatik olarak güncellendiğini görecek ve geliştirme hızınızın arttığını fark edeceksiniz.

Bir sonraki adım olarak, projenize dotenv kütüphanesini ekleyerek ortam değişkenlerini yönetmeyi ve morgan gibi araçlarla HTTP isteklerini loglamayı öğrenebilirsiniz. Profesyonel bir Node.js geliştiricisi olma yolunda, araçlarınızı doğru yapılandırmak başarınızın anahtarı olacaktır.

Bu yazıya tepkinizi paylaşın:
Zeynep Kaya

Yaşam kalitesini artıran hızlı ve etkili yöntemler üzerine içerik geliştiriyorum. Detaylara önem veren, çözüm odaklı rehberlerin öncüsüyüm.

Yorumlar (0)

Yorum Yaz