IDX çalışma alanınızı özelleştirme

Project IDX, aşağıdakileri açıklayan tek bir .idx/dev.nix yapılandırma dosyası tanımlayarak çalışma alanınızı projenizin benzersiz ihtiyaçlarına göre uyarlamanızı sağlar:

  • Çalıştırmanız gereken sistem araçları (ör. Terminal'den), derleyiciler veya diğer ikili programlar gibi.
  • Yüklü olması gereken IDE uzantıları (örneğin, programlama dili desteği).
  • Uygulama önizlemelerinizin nasıl görünmesi gerektiği (örneğin, web sunucunuzu çalıştırmak için kullanılan komutlar).
  • Çalışma alanınızda çalışan yerel sunucular tarafından kullanılabilen genel ortam değişkenleri.

Sunulan özelliklerin tam açıklaması için dev.nix referansına bakın.

Nix ve IDX

IDX, her çalışma alanı için ortam yapılandırmasını tanımlamak üzere Nix'i kullanır. IDX özellikle şunları kullanır:

  • Çalışma alanı ortamlarını tanımlamak için Nix programlama dili. Nix işlevsel bir programlama dilidir. dev.nix dosyasında tanımlayabileceğiniz özellikler ve paket kitaplıkları, Nix özellik grubu söz dizimini izler.

  • Çalışma alanınızda kullanılabilen sistem araçlarını yönetmek için Nix paket yöneticisi. Bu, APT (apt ve apt-get), Homebrew (brew) ve dpkg gibi işletim sistemine özel paket yöneticilerine benzer.

Nix ortamları yeniden oluşturulabilir ve bildirim temellidir. Bu nedenle, IDX bağlamında Nix yapılandırma dosyanızı Git deponuzun bir parçası olarak paylaşarak projenizde çalışan herkesin aynı ortam yapılandırmasına sahip olmasını sağlayabilirsiniz.

Temel bir örnek

Aşağıdaki örnekte, önizlemeleri etkinleştiren temel bir ortam yapılandırması gösterilmektedir:

{ pkgs, ... }: {

  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_18
  ];

  # Sets environment variables in the workspace
  env = {
    SOME_ENV_VAR = "hello";
  };

  # Search for the extensions you want on https://open-vsx.org/ and use "publisher.id"
  idx.extensions = [
    "angular.ng-template"
  ];

  # Enable previews and customize configuration
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = [
          "npm"
          "run"
          "start"
          "--"
          "--port"
          "$PORT"
          "--host"
          "0.0.0.0"
          "--disable-host-check"
        ];
        manager = "web";
      };
    };
  };
}

Sistem araçları ekleyin

Çalışma alanınıza derleyiciler veya bulut hizmetleri için CLI programları gibi sistem araçları eklemek isterseniz Nix paket kaydında benzersiz paket kimliğini bulun ve dev.nix dosyanızın packages nesnesine ("pkgs" ön ekiyle birlikte) ekleyin.

{ pkgs, ... }: {
  # Which nixpkgs channel to use.
  channel = "stable-23.11"; # or "unstable"

  # Use https://search.nixos.org/packages to find packages
  packages = [
    pkgs.nodejs_18
  ];
  ...
}

Bu, APT (apt ve apt-get), Homebrew (brew) ve dpkg gibi işletim sistemine özel paket yöneticilerini kullanarak normalde sistem paketlerini yükleme yönteminden farklıdır. Tam olarak hangi sistem paketlerinin gerekli olduğunu açıkça belirterek IDX çalışma alanlarının paylaşılmasını ve yeniden oluşturulmasını kolaylaştırır.

Yerel düğüm ikili programlarını kullan

Yerel makinenizde olduğu gibi, yerel olarak yüklenen düğüm paketleriyle (ör. package.json içinde tanımlanan paketler) ilgili ikili programlar, npx komutu ile çağrılarak bir Terminal panelinde yürütülebilir.

Ek kolaylık olarak, node_modules klasörüne sahip bir dizinde (bir web projesinin kök dizini gibi) yer alıyorsanız yerel olarak yüklenen ikili programlar npx öneki olmadan doğrudan çağrılabilir.

gcloud bileşen ekle

Tüm IDX çalışma alanlarında Google Cloud için gcloud KSA'nın varsayılan bir yapılandırması kullanılabilir.

Ek bileşenlere ihtiyacınız olursa bunları dev.nix dosyanıza şu şekilde ekleyebilirsiniz:

{ pkgs }: {
  packages = [
    ...
    (pkgs.google-cloud-sdk.withExtraComponents [
      pkgs.google-cloud-sdk.components.cloud-datastore-emulator
    ])
    ...
  ];
}

IDE uzantıları ekleme

OpenVSX uzantı kayıt defterini kullanarak IDX'te uzantıları iki şekilde yükleyebilirsiniz:

  • Uzantıları keşfetmek ve yüklemek için IDX'te Uzantılar panelini kullanarak. Bu yaklaşım, aşağıdakiler gibi kullanıcıya özel uzantılar için en iyi seçenektir:

    • Özel renk temaları
  • dev.nix dosyanıza uzantı ekleyerek. Çalışma alanı yapılandırmanızı paylaştığınızda bu uzantılar otomatik olarak yüklenir. Bu yaklaşım, aşağıdakiler gibi projeye özgü uzantılar için en iyi seçenektir:

    • Dile özgü hata ayıklayıcılar da dahil olmak üzere dil uzantılarının programlanması
    • Projenizde kullanılan bulut hizmetlerinin resmi uzantıları
    • Kod biçimlendiricileri

İkinci yaklaşım için tam nitelikli uzantı kimliğini (<publisher>.<id> biçiminde) bularak ve aşağıdaki gibi idx.extensions nesnesine ekleyerek dev.nix dosyanıza IDE uzantılarını dahil edebilirsiniz:

{ pkgs, ... }: {
  ...
  # Search for the extensions you want on https://open-vsx.org/ and use the format
  # "<publisher>.<id>"
  idx.extensions = [
    "angular.ng-template"
  ];
  ...
}

Ortak hizmetler ekleyin

IDX, geliştirme sırasında ihtiyaç duyabileceğiniz yaygın hizmetler için basitleştirilmiş kurulum ve yapılandırma da sunar. Örneğin:

  • Kapsayıcılar
    • Docker (services.docker.*)
  • Mesajlaşma
    • Pub/Sub Emülatörü (services.pubsub.*)
  • Veritabanları
    • MySQL (services.mysql.*)
    • Postgre'ler (services.postgres.*)
    • Redis (services.redis.*)
    • Spanner (services.spanner.*)

Bu hizmetleri çalışma alanınızda etkinleştirmeyle ilgili ayrıntılar için dev.nix referansının services.* bölümlerini inceleyin.

Önizlemeleri özelleştir

Uygulama önizlemelerinizi nasıl özelleştireceğinizle ilgili ayrıntılar için önizlemelerle ilgili dokümanlara bakın.

Tüm özelleştirme seçeneklerini görün

Ortam yapılandırma şemasının ayrıntılı açıklaması için dev.nix referansını inceleyin.