Metin2Games Discord sunucusuna katılmak ve anlık destek almak için tıkla!
1
Kayıtlı
1 Yıl 9 Ay 26 Gün
Katılım
10 Ocak 2025
Konular
163
Mesajlar
257
Tepkime puanı
36
Online süresi
11h 19m
Puan
53
Konum
Türkiye
Web sitesi
www.zyncra.shop
📌 Konu İçeriği — Hızlı Bakış (📂 cPanel / Web • ⏱ ~5 dk okuma • 💻 Kod: JavaScript)
01. Deno 2 Rehberi: Node.js Geliştiricileri İçin İzin Sistemi, deno.json ve npm Uyumluluğu
02. 1. Deno nedir?
03. 2. Kurulum ve ilk çalıştırma
04. 3. Deno'nun izin sistemi
05. 4. deno.json ne işe yarar?
06. 5. Dahili geliştirme araçları

photo-1451187580459-43490279c0fa

#

#

# Deno 2 Rehberi: Node.js Geliştiricileri İçin İzin Sistemi, deno.json ve npm Uyumluluğu

JavaScript ve TypeScript ekosistemi uzun süredir Node.js etrafında gelişiyor. Ancak Deno, daha bütünleşik araçlar, varsayılan olarak kısıtlanmış izinler ve TypeScript desteğiyle farklı bir geliştirme yaklaşımı sunuyor.

Deno 2 ile birlikte Node.js ve npm ekosistemiyle uyumluluk da önemli ölçüde geliştirildi. Bu yazıda Deno 2'nin temel özelliklerini, izin sistemini, yapılandırma dosyasını ve mevcut Node.js projeleriyle ilişkisini inceleyeceğiz.

# 1. Deno nedir?

Deno, JavaScript ve TypeScript kodlarını çalıştırmak için geliştirilmiş bir runtime'dır.

Deno'nun öne çıkan özellikleri:

  • TypeScript için yerleşik destek
  • Dosya sistemi ve ağ erişimi için izin mekanizması
  • Dahili formatter ve linter
  • Dahili test runner
  • deno.json ile proje yapılandırması
  • Node.js ve npm paketleriyle uyumluluk seçenekleri

Deno, yalnızca bir kod çalıştırıcısı değil, aynı zamanda geliştirme araçlarının önemli bir bölümünü bir araya getiren bir platformdur.

# 2. Kurulum ve ilk çalıştırma

Kurulum için resmi dokümantasyon kullanılmalıdır.

Kurulumdan sonra sürümü kontrol edin:

deno --version

Ardından main.ts isimli bir dosya oluşturun:

function greet(name: string): string {

return `Merhaba, ${name}!`;

}

console.log(greet("Deno"));

Dosyayı çalıştırmak için:

deno run main.ts

Deno, TypeScript kodunu çalıştırmak için normalde ayrıca bir tsc derleme komutu çalıştırılmasını gerektirmez.

# 3. Deno'nun izin sistemi

Deno'nun en önemli özelliklerinden biri, hassas kaynaklara erişimin varsayılan olarak kısıtlanmasıdır.

Örneğin bir programın internet üzerinden istek yapması gerekiyorsa ağ izni verilmesi gerekir.

const response = await fetch(

"

"

);

const todo = await response.json();

console.log(todo);

Bu dosyayı izin vermeden çalıştırdığınızda Deno, ağ erişimi nedeniyle işlemi engelleyebilir.

Gerekli izni vererek çalıştırabilirsiniz:

deno run --allow-net= jsonplaceholder.typicode.com main.ts

Yukarıdaki komutta = sonrasında boşluk bulunmamalıdır. Doğru kullanım şöyledir:

deno run --allow-net=jsonplaceholder.typicode.com main.ts

Diğer önemli izinler:

  • --allow-read: Dosya okuma
  • --allow-write: Dosya yazma
  • --allow-env: Ortam değişkenlerine erişme
  • --allow-run: Alt süreç çalıştırma
  • --allow-net: Ağ erişimi

Örneğin yalnızca belirli bir dizine okuma izni vermek mümkündür:

deno run --allow-read=./data main.ts

İzinler mümkün olduğunca dar tutulmalıdır. Özellikle üretim ortamlarında uygulamaya gereksiz dosya sistemi, ağ veya süreç çalıştırma yetkileri verilmemelidir.

# 4. deno.json ne işe yarar?

Deno projelerinde deno.json yapılandırma dosyası, görevleri ve geliştirme araçlarını merkezi olarak yönetmek için kullanılabilir.

Örnek bir dosya:

{

"tasks": {

"dev": "deno run --watch main.ts",

"test": "deno test",

"check": "deno check main.ts",

"lint": "deno lint",

"fmt": "deno fmt"

},

"compilerOptions": {

"strict": true

}

}

Bu dosya sayesinde sık kullanılan komutları kolayca çalıştırabilirsiniz:

deno task dev

deno task test

deno task check

deno task lint

deno task fmt

Bu yaklaşım, Node.js projelerindeki package.json içerisinde tanımlanan scripts alanına benzer.

Deno'nun yapılandırma dosyası yalnızca görevleri tanımlamakla kalmaz; proje ayarları, import eşlemeleri ve araç seçenekleri için de kullanılabilir.

# 5. Dahili geliştirme araçları

Deno, temel geliştirme görevlerinin çoğunu kendi CLI aracı üzerinden sunar.

# Kod biçimlendirme

deno fmt

# Kod kalitesi kontrolü

deno lint

# Tip kontrolü

deno check main.ts

# Test çalıştırma

deno test

Basit bir test örneği:

import { assertEquals } from "jsr:@std/assert";

function add(a: number, b: number): number {

return a + b;

}

Deno.test("add iki sayıyı toplar", () => {

assertEquals(add(2, 3), 5);

});

Bu örnekte kullanılan assertion paketinin projeye eklenmiş olması gerekir. Deno'nun paket yönetimiyle bağımlılık eklemek için deno add @std/assert komutu kullanılabilir.

# 6. npm ve Node.js uyumluluğu

Deno 2, mevcut JavaScript ekosistemine erişmek isteyen geliştiriciler için çeşitli uyumluluk mekanizmaları sunar.

Örneğin npm paketleri doğrudan import edilebilir:

import express from "npm:express@4";

Node.js'in yerleşik modülleri de uygun durumlarda kullanılabilir:

import os from "node:os";

console.log(os.platform());

Deno 2 ayrıca package.json, node_modules ve npm çalışma alanlarıyla çalışmayı destekler.

Ancak bu durum, bütün Node.js uygulamalarının hiçbir değişiklik yapılmadan Deno üzerinde çalışacağı anlamına gelmez. Yerel ikili bağımlılıklar, dosya sistemi beklentileri, bazı paketlerin çalışma zamanı varsayımları ve izin gereksinimleri ayrıca test edilmelidir.

Mevcut bir Node.js projesini taşırken önce bağımlılıkları ve çalıştırma komutlarını incelemek, ardından testleri Deno ortamında çalıştırmak daha sağlıklı bir yaklaşımdır.

# 7. Node.js mi, Deno 2 mi?

ÖzellikNode.jsDeno 2
TypeScriptSürüme ve yapılandırmaya bağlıYerleşik destek
İzin sistemiDeno'daki gibi varsayılan kısıtlamalı model değildirİzinler varsayılan olarak kısıtlıdır
Test aracıDahili test runner mevcutDahili test runner mevcut
Kod biçimlendirmeGenellikle harici araçlarDahili formatter
npm ekosistemiDoğrudan ve geniş destekGelişmiş uyumluluk
YapılandırmaGenellikle package.jsondeno.json ve npm proje seçenekleri

Bu tablo genel bir karşılaştırmadır. Her iki platformun özellikleri sürümlerle gelişmeye devam eder.

# 8. Deno 2 hangi projelerde değerlendirilebilir?

Deno şu durumlarda iyi bir alternatif olabilir:

  • Yeni TypeScript servisleri geliştirirken
  • Daha bütünleşik bir araç zinciri tercih edildiğinde
  • İzinlerin açıkça yönetilmesi gerektiğinde
  • Küçük API'ler veya otomasyon araçları oluşturulurken
  • Mevcut npm paketleriyle birlikte daha modern bir çalışma ortamı istenildiğinde

Buna karşılık, kapsamlı bir Node.js uygulamasını taşımak için yalnızca performans beklentisiyle karar verilmemelidir. Gerçek bağımlılık uyumluluğu, deployment gereksinimleri ve ölçülmüş performans sonuçları dikkate alınmalıdır.

# Sonuç

Deno 2, JavaScript ve TypeScript geliştiricilerine daha bütünleşik araçlar ve izin odaklı bir güvenlik modeli sunar. npm ve Node.js uyumluluğunun gelişmesi, bu platformu mevcut ekosistemden tamamen kopmadan denemeyi kolaylaştırır.

Bununla birlikte Node.js hâlâ güçlü bir ekosisteme sahiptir. En doğru seçim, projenin gereksinimleri ve kullanılan bağımlılıkların uyumluluğu değerlendirilerek yapılmalıdır.

JavaScript ile Hata Yutmayan Retry Kalıbı
JavaScript:
async function withRetry(task, { retries = 3, baseDelayMs = 200 } = {}) {
  for (let attempt = 1; ; attempt++) {
    try {
      return await task();
    } catch (err) {
      if (attempt > retries) throw new Error(`İşlem ${retries} denemeden sonra başarısız`, { cause: err });
      await new Promise((r) => setTimeout(r, baseDelayMs * 2 ** (attempt - 1)));
    }
  }
}

Özet Değerlendirme: Deno 2 Rehberi: Node.js Geliştiricileri İçin İzin Sistemi, deno.json ve npm Uyumluluğu JavaScript ve TypeScript ekosistemi uzun süredir Node.js etrafında gelişiyor. Ancak Deno, daha bütünleşik araçlar, varsayılan olarak kısıtlanmış izinler ve TypeScript desteğiyle farklı bir g...

Sıkça Sorulan Sorular (SSS)
Soru 1: Deno 2 Rehberi işlemi sırasında veri kaybı yaşanır mı?
Adımlar doğru uygulandığında mevcut dosya ve veritabanlarınız etkilenmez. Yine de kritik yapılandırma değişikliklerinden önce cPanel üzerinden tam yedek (Full Backup) almanız önerilir.

Soru 2: Yapılan değişiklikler ne kadar sürede aktif olur?
cPanel, dosya yöneticisi, MySQL ve e-posta ayarları kaydedildiği anda anında devreye girer; DNS veya alan adı yönlendirmeleri ise 5 ila 30 dakika içerisinde tüm sunuculara yayılır.
 
Community platform by XenForo® © 2010-2026 XenForo Ltd.
© 2020-2026 Metin2Games - Tüm Hakları Saklıdır.
Geri
Üst