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