
WebExtension Oyun Alanı
Firefox Eklenti Mimarisini Anlamak:
Geliştirmeye başlamadan önce, bir Firefox eklentisinin mimarisini anlamak önemlidir. Temel olarak, bir Firefox eklentisi bir araya getirilmiş HTML, CSS ve JavaScript dosyalarından oluşur. manifest.json adlı manifest dosyası, eklentinin temelini oluşturarak yapısını, izinlerini ve diğer kritik detaylarını tanımlar.
Bir Firefox Eklentisinin Temel Bileşenleri:
- Manifest Dosyası (manifest.json): Eklenti meta verileri (ad, sürüm, izinler, betikler vb.).
- Arka Plan Betikleri: Tarayıcı olaylarını yöneten ve arka planda çalışan komut dosyaları.
- İçerik Betikleri: Web sayfalarına eklenip DOM ile etkileşen komut dosyaları.
- Popup HTML: Tarayıcı araç çubuğu simgesine tıklanınca görünen kullanıcı arayüzü.
- Seçenekler HTML: Eklenti ayarlarını yapılandırmak için kullanılan arayüz (isteğe bağlı).
- Simgeler ve Görüntüler: Eklentiyi temsil eden grafiksel öğeler.
Adım 1: Gerekli Araçların Kurulumu
- Node.js ve npm (veya yarn): Eğer kurulu değilse, https://nodejs.org/ adresinden Node.js'i indirin ve kurun. npm, Node.js ile birlikte gelir. Alternatif olarak yarn kullanmak isterseniz, terminale npm install --global yarn yazarak kurabilirsiniz.
- TypeScript: TypeScript'i global olarak kurmak için terminalde aşağıdaki komutu çalıştırın:
Bash:npm install --global typescript# veya yarn kullanıyorsanız: # yarn global add typescript
- Web-ext aracını kurmak için terminalde aşağıdaki komutu çalıştırarak web-ext aracını global olarak kurun:
-
Bash:
npm install --global web-ext # veya yarn kullanıyorsanız: # yarn global add web-ext
Adım 2: Eklenti Projesi Oluşturma ve Yapılandırma
- Proje Dizini Oluşturma: Eklenti dosyalarınız için bir klasör oluşturun (örneğin, benim-eklentim).
Bash:mkdir benim-eklentim cd benim-eklentim
- package.json Oluşturma: Projenizi npm veya yarn ile başlatmak için aşağıdaki komutu çalıştırın:
Bash:
Bu komut, proje hakkında temel bilgileri içeren bir package.json dosyası oluşturacaktır.npm init -y# veya yarn kullanıyorsanız: # yarn init -y
- TypeScript Yapılandırma Dosyası (tsconfig.json) Oluşturma: TypeScript derleyici seçeneklerini yapılandırmak için bir tsconfig.json dosyası oluşturmanız gerekir. Proje dizininde aşağıdaki komutu çalıştırın:
Bash:
Bu, temel bir tsconfig.json dosyası oluşturacaktır. Bu dosyayı projenizin gereksinimlerine göre düzenleyebilirsiniz. Özellikle outDir (çıktı dizini) ve rootDir (kaynak dizini) seçeneklerini kontrol etmeniz önemlidir. Örneğin, TypeScript dosyalarınızı src adlı bir klasörde tutmak ve derlenmiş JavaScript dosyalarını dist adlı bir klasöre çıkarmak isteyebilirsiniz. Bu durumda tsconfig.json dosyanızda aşağıdaki gibi değişiklikler yapabilirsiniz:tsc --init
JSON:{ "compilerOptions": { "target": "ES2017", "module": "ESNext", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": [ "src/**/*" ], "exclude": [ "node_modules" ] }
- manifest.json Oluşturma: Firefox eklentilerinin temel yapılandırma dosyasıdır. Proje dizininde (genellikle src veya dist klasörünün içinde değil, ana proje dizininde) manifest.json adında bir dosya oluşturun ve aşağıdaki gibi temel bilgileri ekleyin:
JSON:
Bu dosyayı eklentinizin gereksinimlerine göre düzenleyin. Özellikle name, version, description, permissions, content_scripts, background, browser_action ve icons alanlarına dikkat edin.{ "manifest_version": 3, "name": "Benim TypeScript Eklentim", "version": "1.0", "description": "TypeScript ile geliştirilmiş bir Firefox eklentisi", "permissions": [ // Eklentinizin ihtiyaç duyduğu izinleri buraya ekleyin ], "content_scripts": [ { "matches": ["<all_urls>"], "js": ["content.js"] } ], "background": { "service_worker": "background.js" }, "browser_action": { "default_popup": "popup.html", "default_icon": { "16": "images/icon16.png", "48": "images/icon48.png", "128": "images/icon128.png" } }, "icons": { "16": "images/icon16.png", "48": "images/icon48.png", "128": "images/icon128.png" } }
Adım 3: TypeScript Kodlarını Yazma
- Kaynak Klasörü Oluşturma: Eğer tsconfig.json dosyanızda rootDir olarak src belirttiyseniz, bu klasörü oluşturun:
Bash:mkdir src
- TypeScript Dosyaları Oluşturma: src klasörü içinde eklentinizin mantığını içeren TypeScript dosyalarını oluşturun (örneğin, content.ts, background.ts, popup.ts).
- TypeScript Kodlarını Yazma: Bu dosyalara TypeScript kodlarınızı yazın. Örneğin, src/content.ts dosyasına basit bir içerik betiği ekleyebilirsiniz:
Kod:
src/background.ts dosyasına bir arka plan betiği:console.log("Bu bir içerik betiğidir!");
Kod:
Eğer bir popup'ınız varsa, src/popup.ts dosyasına popup'ın mantığını yazabilirsiniz. Ayrıca src klasöründe popup.html ve images gibi diğer gerekli dosyaları da oluşturabilirsiniz.console.log("Bu bir arka plan betiğidir!");
TypeScript kodlarınızı Firefox'un anlayacağı JavaScript kodlarına derlemeniz gerekir. tsconfig.json dosyanızdaki outDir ayarına göre JavaScript dosyaları oluşturulacaktır.
- Derleme Komutunu Çalıştırma:Terminalde proje dizininizde aşağıdaki komutu çalıştırın:
Bash:
Bu komut, tsconfig.json dosyasındaki ayarlara göre src klasöründeki TypeScript dosyalarını derleyecek ve outDir ile belirttiğiniz klasöre (örneğin, dist) JavaScript dosyalarını (örneğin, content.js, background.js, popup.js) oluşturacaktır.tsc
manifest.json dosyasındaki betik yollarının, derlenmiş JavaScript dosyalarının bulunduğu konumu işaret ettiğinden emin olun. Eğer TypeScript dosyalarınızı src klasöründe tuttunuz ve JavaScript dosyalarını dist klasörüne derlediyseniz, manifest.json dosyanızdaki js yollarını buna göre güncellemeniz gerekir. Örneğin:
JSON:
{
"manifest_version": 3,
"name": "Benim TypeScript Eklentim",
"version": "1.0",
"description": "TypeScript ile geliştirilmiş bir Firefox eklentisi",
"permissions": [
// ...
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["dist/content.js"]
}
],
"background": {
"service_worker": "dist/background.js"
},
"browser_action": {
"default_popup": "popup.html",
"default_icon": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
},
"icons": {
"16": "images/icon16.png",
"48": "images/icon48.png",
"128": "images/icon128.png"
}
}
Önemli Not: popup.html ve images gibi statik dosyalar genellikle doğrudan proje dizininde veya uygun alt klasörlerde bulunur ve manifest.json dosyasında doğru şekilde referans verilmelidir. Bu dosyaların TypeScript ile bir ilgisi yoktur, bu yüzden derleme işleminden etkilenmezler.Adım 6: web-ext ile Eklentiyi Test Etme
- Proje Ana Dizinine Gidin: Terminalde manifest.json dosyasının bulunduğu ana proje dizinine gidin.
- Eklentiyi Çalıştırma: Aşağıdaki komutu kullanarak eklentiyi geçici bir Firefox profilinde çalıştırabilirsiniz:
Bash:
Veya belirli bir geliştirme profiliniz varsa:web-ext run
Bash:
web-ext, eklentinizi Firefox'ta açacak ve geliştirme sürecinde yaptığınız değişiklikleri otomatik olarak yeniden yükleyecektir (bazı durumlarda Firefox'u yeniden başlatmanız gerekebilir).web-ext run --profile "geliştirme_profilinizin_adı"

Adım 7: Geliştirme Süreci ve İpuçları
- TypeScript'i İzleme Modunda Çalıştırma: Geliştirme sırasında TypeScript dosyalarınızda değişiklik yaptıkça otomatik olarak derlenmelerini sağlamak için TypeScript derleyicisini izleme modunda çalıştırabilirsiniz:
Bash:
Bu komutu ayrı bir terminal penceresinde çalıştırarak, kodunuzu her kaydettiğinizde JavaScript dosyalarının otomatik olarak güncellenmesini sağlayabilirsiniz.tsc -w# veya # tsc --watch
- web-ext Otomatik Yenileme: web-ext run genellikle dosya değişikliklerini algılar ve eklentiyi otomatik olarak yeniden yükler. Ancak bazı durumlarda (özellikle yapılandırma dosyalarında yapılan değişikliklerde) Firefox'u manuel olarak yeniden başlatmanız gerekebilir.
- Hata Ayıklama: Firefox Geliştirici Araçları'nı (Araçlar > Web Geliştiricisi) kullanarak eklentinizin arka plan betiğini, içerik betiklerini ve popup'ını inceleyebilir, hataları ayıklayabilirsiniz. "Eklenti Hata Ayıklayıcısı" aracı özellikle eklentiye özgü hataları ve günlükleri görmek için kullanışlıdır.
- Build Script'leri Ekleme: package.json dosyanızın scripts bölümüne derleme ve izleme komutlarını ekleyerek geliştirme sürecinizi kolaylaştırabilirsiniz:
JSON:
Bu sayede npm run build, npm run watch veya npm run start komutlarını kullanarak ilgili işlemleri gerçekleştirebilirsiniz."scripts": { "build": "tsc", "watch": "tsc -w", "start": "web-ext run" }
Bu adımları takip ederek TypeScript ile Firefox eklentileri geliştirebilir ve web-ext aracını kullanarak bu eklentileri kolayca test edebilirsiniz.




