Chrome Geliştirici Araçları'nda otomatik Workspace bağlantısı

Workspace, web sitenizin kaynak dosyalarını doğrudan Chrome Geliştirici Araçları'ndan düzenlemenize olanak tanıyan güçlü bir özelliktir. Bu sayede, kod düzenleyiciniz ile tarayıcı arasında sürekli olarak geçiş yapmanız gerekmez.

Genel Bakış

Chrome Geliştirici Araçları'ndaki bir çalışma alanı, bir web sunucusu tarafından sunulan dosyaları bilgisayarınızdaki yerel bir klasördeki dosyalarla eşler. Bir çalışma alanını yerel bir proje için etkinleştirdiğinizde, DevTools'un Kaynaklar panelindeki dosyalarda yaptığınız tüm değişiklikler otomatik olarak yerel proje dosyalarınıza kaydedilir. Bu sayede, DevTools'un anlık analizlerinden yararlanırken doğrudan projenizin kod tabanında çalışıyormuş gibi sorunsuz bir düzenleme deneyimi yaşayabilirsiniz.

Otomatik çalışma alanı bağlantısının avantajları

Otomatik çalışma alanı bağlantısı, manuel yapılandırmayı ortadan kaldırarak çalışma alanı kurulumunu kolaylaştırır. Proje klasörlerini Geliştirme Araçları'na manuel olarak eklemek yerine yerel geliştirme sunucunuz, Chrome Geliştirme Araçları'nın otomatik olarak algıladığı özel bir devtools.json dosyası sağlayabilir. Bu durum şu avantajları sunar:

  • Daha hızlı hata ayıklama: Dosyaları DevTools'da düzenleyin ve tarayıcıdan çıkmadan veya manuel olarak kaydetmeden güncellemeleri anında görün.
  • Anlık değişiklikler: Değişiklikler yerel dosyalarınıza ve tarayıcıya anında yansıtılarak geliştirme hızı artırılır.
  • Manuel kurulum yok: Proje dosyalarının eşlenmesini otomatikleştirerek kurulum süresini kısaltır. Bu özellik özellikle yeni projelerde veya ekip üyelerini dahil ederken faydalıdır.

Otomatik çalışma alanı bağlantısının işleyiş şekli

Otomatik çalışma alanı bağlantısı, yerel geliştirme sunucunuzun belirli bir JSON dosyasını önceden tanımlanmış bir yolda kullanıma sunmasıyla çalışır. Chrome Geliştirici Araçları açıkken localhost adresinden sunulan bir web sitesinde gezinirken otomatik olarak şu adrese istek gönderilir:

/.well-known/appspecific/com.chrome.devtools.json

Sunucunuz geçerli bir devtools.json dosyasıyla yanıt verirse DevTools, projenizin kaynak klasörlerine otomatik olarak bağlanmak için bu dosyadaki bilgileri kullanır. devtools.json dosyası genellikle şunları içerir:

{
  "workspace": {
    "root": "/Users/yourname/path/to/your/project",
    "uuid": "a-random-version-4-uuid"
  }
}
  • workspace.root: Projenizin yerel dosya sisteminizdeki kök dizinine giden mutlak yol.
  • workspace.uuid: Projeniz için benzersiz bir tanımlayıcı (UUID v4). Bu, DevTools'un farklı projeleri ayırt etmesine yardımcı olur.

Geliştirici Araçları bu dosyayı alıp işledikten sonra Kaynaklar > Çalışma Alanları panelinde Bağlan düğmesi gösterir.

Yerel geliştirme ve hata ayıklama için tasarlandı

devtools.json üzerinden otomatik çalışma alanı keşfi mekanizması yalnızca yerel geliştirme ortamları için tasarlanmıştır ve yalnızca uygulamanız localhost üzerinden sunulduğunda çalışır. Chrome Geliştirici Araçları, yerel bir projede hata ayıklarken /.well-known/appspecific/com.chrome.devtools.json isteğini yalnızca geliştirme modunda gönderir. Bu özellik, üretim ortamları için tasarlanmamıştır.

Yerel dosyalara erişim izni verme

Güvenlik nedeniyle Chrome, bir web sitesinin yerel ağınızdaki veya makinenizdeki dosyalara erişmesi için kullanıcının açık iznini gerektirir. Geliştirici Araçları, devtools.json kullanarak yerel projenize bağlanmaya çalıştığında Chrome'un projenizin dizinine erişmesine izin vermeniz istenir. Bu izin isteği, izin verilmediği sürece herkese açık ağlardan yerel hedeflere yapılan istekleri kısıtlayan Chrome'un Yerel Ağ Erişimi politikalarına uygundur. Bu izni isteme özelliği güvenli bağlamlarla (HTTPS) sınırlıdır. Yerel geliştirme için bu genellikle localhost öğesinin güvenli bağlam olarak değerlendirildiği anlamına gelir.

devtools.json dosyası oluşturma ve yayınlama

Yerel geliştirme sunucusunda çalışan tipik bir ön uç projesi için sunucunuzu /.well-known/appspecific/com.chrome.devtools.json isteğine doğru JSON içeriğiyle yanıt verecek şekilde yapılandırmanız gerekir.

Bu konuda genel olarak şu yaklaşımı benimseyebilirsiniz:

  1. UUID oluşturun: UUID v4'e ihtiyacınız vardır. Online araçlar veya bir senaryo kullanarak oluşturabilirsiniz.
  2. Proje kökünü belirleme: Projenizin kök dizininin tam yolunu alın.
  3. Uç nokta oluşturma: Geliştirme sunucunuzu, /.well-known/appspecific/com.chrome.devtools.json için GET isteklerini işleyecek şekilde yapılandırın.
  4. JSON'u sunun: Bu uç nokta kullanıldığında Content-Type: application/json üstbilgisine ve devtools.json içeriğine sahip bir JSON yanıtı sunun.

devtools.json dosyanızda belirtilen workspace.root yolu, yerel dosya sistemindeki projenizin kök dizinine ait mutlak yol olmalıdır. Bu nedenle, yol işletim sisteminize (örneğin, macOS veya Linux'ta /Users/yourname/projects/my-app ya da Windows'da C:\Users\yourname\projects\my-app) ve belirli proje kurulumunuza bağlı olarak değişir. Üretim ortamında bu dosyanın kontrol edilmesini önlemek için yoksayılan dosyalarınıza (ör. .gitignore listesine) ekleyebilirsiniz.

Sunucunuzun bu yolu dinamik olarak oluşturması veya sunması ya da geliştirme ortamınız için doğru şekilde yapılandırmanız önemlidir. Üretim ortamında bu dosyanın kontrol edilmesini önlemek için yoksayılan dosyalarınıza (örneğin, .gitignore listesine) ekleyebilirsiniz.

Örnekler

Projenizin teknoloji yığınına bağlı olarak devtools.json dosyası sağlamanın birçok yolu vardır.

Node.js ve Express

Bu komut dosyası, minimum düzeyde bir Express sunucusu çalıştırır. /.well-known/appspecific/com.chrome.devtools.json adresinde, projectRoot. yolunu içeren bir JSON dosyası sunar. Sunucunun çalıştırıldığı klasörü gösterir. projectRoot değişkenini, sunucu komut dosyanızın bulunduğu yere değil, projenizin gerçek kök dizinine doğru şekilde işaret edecek şekilde ayarlayın.

const express = require('express');
const path = require('path');
const { v4: uuidv4 } = require('uuid');

const app = express();
const port = 3000;

if (process.env.NODE_ENV !== 'production') {
  app.get('/.well-known/appspecific/com.chrome.devtools.json', (req, res) => {
    const projectRoot = path.resolve(__dirname);
    const workspaceUuid = uuidv4();

    res.json({
      workspace: {
        root: projectRoot,
        uuid: workspaceUuid,
      },
    });
  });
}

app.listen(port, () => {
  console.log(`Development server listening at http://localhost:${port}`);
});

devtools-json-generator komut dosyasını kullanma

generate-devtools-json kullanarak sizin için devtools.json oluşturabilirsiniz.

Geçerli dizinde devtools.json dosyasını oluşturmak için şu komutu çalıştırın:

npx generate-devtools-json

Dilerseniz dosyayı belirli bir dizinde oluşturmak için dizini bağımsız değişken olarak iletin:

npx generate-devtools-json /path/to/your/project

Projenin ana sayfasında devtools-json-generator hakkında daha fazla bilgi edinin.

Entegrasyonlar

Bazı ön uç çerçeveleri ve derleme araçları, bu süreci basitleştirmek için eklentiler veya yapılandırmalar sunar.

Vite

Vite tabanlı projeler (SvelteKit dahil) için vite-plugin-devtools-json bir çözümdür. devtools.json dosyasının anında oluşturulmasını ve yayınlanmasını otomatikleştirir.

Kullanmak için eklentiyi yükleyin:

npm install -D vite-plugin-devtools-json

Ardından, vite.config.js (veya vite.config.ts) hesabınıza ekleyin:

// vite.config.js
import { defineConfig } from 'vite';
import devtoolsJson from 'vite-plugin-devtools-json';

export default defineConfig({
  plugins: [
    devtoolsJson({
      // Optional: specify a custom root path if different from Vite's root
      // root: '/path/to/your/project/root',
    }),
  ],
});

Angular

Angular projenizi yerel olarak çalıştırmak için ng serve kullanıyorsanız (ve @angular/cli sürümünüz en az 19.0.0 ise) Angular CLI, sizin için doğru devtools.json dosyasını otomatik olarak sunan ara yazılım sağlar.

Örneğin, yeni bir uygulama oluşturup çalıştırmak için:

npm install -g @angular/cli
ng new my-first-angular-app
ng serve

https://localhost:4200/.well-known/appspecific/com.chrome.devtools.json adresine gittiğinizde oluşturulan JSON dosyasını görebilirsiniz.

Sorun giderme

Bu bölümdeki ipuçlarını uygulayarak otomatik çalışma alanı bağlantısıyla ilgili yaygın sorunları çözebilirsiniz.

Çalışma alanlarından klasör kaldırma

Bir proje klasörü zaten otomatik olarak bağlanmışsa bunu Geliştirici Araçları çalışma alanı ayarlarınızdan manuel olarak kaldırabilirsiniz:

  • Chrome Geliştirici Araçları'nı açın.
  • Kaynaklar sekmesine gidin.
  • Soldaki panelde Çalışma alanları alt sekmesini seçin.
  • İstemediğiniz proje klasörünü sağ tıklayın ve Çalışma alanından kaldır'ı seçin.

Sunucudaki 404 hatalarını yoksayma

Belirli bir proje için bu özelliği kullanmak istemiyorsanız ve sunucu günlüklerinizde /.well-known/appspecific/com.chrome.devtools.json isteğiyle ilgili 404 hataları görüyorsanız bu hataları yoksayabilirsiniz. Dosya sunulmadığı sürece istek zararsızdır. Alternatif olarak, sunucunuzu bu belirli yol için hata günlüğe kaydetmeden 404 durumuyla yanıt verecek şekilde yapılandırabilirsiniz.

Bu özelliği Chrome Geliştirici Araçları'nda devre dışı bırakma

Chrome Geliştirici Araçları'nda otomatik çalışma alanı keşfi özelliğini devre dışı bırakmanız gerekiyorsa uygun Chrome flag'ini ayarlamanız gerekir:

  • Chrome'u açıp chrome://flags simgesine gidin.
  • "DevTools Project Settings"i arayın ve Disabled (Devre Dışı) olarak ayarlayın.
  • "DevTools Automatic Workspace Folders" (Geliştirici Araçları Otomatik Çalışma Alanı Klasörleri) adlı ilgili bir işaret de bulabilirsiniz. Bu işareti de devre dışı bırakabilirsiniz.
  • Değişikliklerin geçerli olması için Chrome'u yeniden başlatın.

Özet

devtools.json mekanizmasını anlayıp kullanarak Chrome Geliştirici Araçları ile yerel geliştirme iş akışınızı önemli ölçüde iyileştirebilirsiniz.