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

IDX projesinin amacı geliştiriciler için mümkün olduğunca faydalı olmaktır. IDX'in bunu başarma yollarından biri, geliştiricilere belirli bir proje için doğru araçları çalışma alanlarına yükleme özgürlüğü ve esnekliği vermek ve ayarları, çalışma alanlarının kendileri için uygun olacak şekilde özelleştirebilmesidir.

Nix + IDX

IDX, her çalışma alanı için ortam yapılandırmasını tanımlamak üzere Nix'i kullanır. Nix, tamamen işlevsel bir paket yöneticisidir ve her bağımlılığa benzersiz tanımlayıcılar atar. Bu da ortamınızın aynı bağımlılığın birden fazla sürümünü sorunsuz şekilde barındırabileceği anlamına gelir. Aynı zamanda tekrar oluşturulabilir ve bildirim temellidir. IDX bağlamında bu, aynı ortam yapılandırmasını yüklemek için Nix yapılandırma dosyanızı çalışma alanları arasında paylaşabileceğiniz anlamına gelir.

IDX, önizleme ortamını ve çalışma alanı paketi yapılandırmalarını doğrudan .idx/dev.nix dosyasıyla kod deposundan tanımlar. Bu dosyada tanımlayabileceğiniz özellikler ve paket kitaplıkları, Nix özellik grubu söz dizimine uyar.

Aşağıdaki örnekte, önizlemeleri etkinleştiren bir temel 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";
      };
    };
  };
}

Nix özellikleri ve paket kitaplıkları

paketler

Ortamda yüklenecek paketler.

Yüklenecek paketleri seçmek için pkgs bağımsız değişkenini kullanabilirsiniz (ör. pkgs.python3). pkgs içeriğinin, belirlenen channel kanal seçeneğine bağlı olduğunu unutmayın.

Örnek:

{pkgs, ...}: {
  channel = "stable-23.11";
  packages = [pkgs.vim];
}

Mevcut paketleri burada arayabilirsiniz: stable-23.11 veya unstable.

Tür: paket listesi

Varsayılan: [ ]

kanal

nixpkgs kanalına ekleyebilirsiniz.

Bu kanal, pkgs bağımsız değişkeninin içeriğini tanımlar.

Tür: “kararlı-23.05”, “kararlı-23.11”, “kararsız” öğelerinden biri

Varsayılan: "stable-23.11"

env

Geliştirici ortamında ayarlanan ortam değişkenleri.

Bunlar tüm kabuklarınıza ve önizleme sunucusuna yayılır. Ortam değişkenleri, uygulamanız belirli bir değişken grubu gerektiriyorsa özellikle yararlı olabilir.

Örnek:

{pkgs, ...}: {
  env = {
    HELLO = "world";
  };
}

Type: herhangi bir şeyin özellik kümesi

Varsayılan: { }

idx.extensions

IDX çalışma alanınıza yüklemek istediğiniz kod uzantılarını kullanın.

Bu, tam nitelikli uzantı kimliklerinin (ör. ${publisherId}.${extensionId}) bir listesidir.

Kullanılabilir uzantıların listesini VSX Kayıt Defterini Aç bölümünde bulabilir ve ${publisherId}.${extensionId} tarihine kadar bunları dev.nix dosyanıza girebilirsiniz.

Type: list of (boş olmayan dize veya yol)

Varsayılan: [ ]

idx.previews.enable

IDX Önizlemelerini etkinleştirmek için bunu true olarak ayarlayın.

Bu özellik, siz uygulamalarınızı geliştirirken uygulamalarınızı otomatik olarak çalıştırmanız ve yeniden yüklemeniz için bir yol sağlar.

Tür: boole

Varsayılan: true

Örnek: true

idx.previews.previews

Yapılandırmaları önizleyin.

IDX'in geliştirici ortamınızda yürüttüğü komutları tanımlayın.

Örnek:

{pkgs, ...}: {
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = ["yes"];
        cwd = "subfolder";
        manager = "web";
        env = {
          HELLO = "world";
        };
      };
    };
  };
}

Type: özellik kümesi (alt modül)

Varsayılan: { }

idx.previews.previews.*.command

Yürütme komutu

Tür: dize listesi

Varsayılan: [ ]

idx.previews.previews.*.cwd

Çalışma dizini

Type: dize

Varsayılan: ""

idx.previews.previews.*.env

Ayarlanacak ortam değişkenleri.

Type: dizenin özellik grubu

Varsayılan: { }

idx.previews.previews.*.manager

Yönetici

Tür: Şunlardan biri: web, flutter

idx.workspace.onCreate

Çalışma alanı ilk kez oluşturulduğunda ve açıldığında yürütülecek komutlar.

Bu, geliştirme ortamını ayarlarken faydalı olabilir. Örneğin, burada npm install öğesinin çalıştırılacağını belirtiyoruz:

{pkgs, ...}: {
  idx.workspace.onCreate = {
    npm-install = "npm install";
  };
}

Tür: özellik grubu (yol veya dize)

Varsayılan: { }

idx.workspace.onStart

Çalışma alanı açıldığında yürütülecek komutlar.

Bu, izleyiciler oluşturmaya başlamak için yararlı olabilir. Örneğin, burada çalıştırılacak 2 komut belirtiyoruz:

{pkgs, ...}: {
  idx.workspace.onStart = {
    npm-watch-fe = "npm run watch:frontend";
    npm-watch-be = "npm run watch:backend";
  };
}

Tür: özellik grubu (yol veya dize)

Varsayılan: { }

services.docker.enable

Rootless docker'ın etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true