Tujuan Project IDX adalah untuk memberikan manfaat sebanyak mungkin kepada pengembang. Salah satu cara IDX melakukannya adalah memberi developer kebebasan dan fleksibilitas untuk menginstal alat yang tepat untuk project tertentu di ruang kerja mereka dan menyesuaikan setelan agar ruang kerja mereka berfungsi untuk mereka.
Nix + IDX
IDX menggunakan Nix untuk menentukan konfigurasi lingkungan untuk setiap ruang kerja. Nix adalah pengelola paket yang sepenuhnya berfungsi dan menetapkan ID unik ke setiap dependensi, yang pada akhirnya berarti lingkungan Anda dapat berisi beberapa versi dependensi yang sama secara lancar. Model ini juga dapat direproduksi dan deklaratif. Dalam konteks IDX, ini berarti Anda dapat membagikan file konfigurasi Nix ke seluruh ruang kerja untuk memuat konfigurasi lingkungan yang sama.
IDX menentukan lingkungan pratinjau dan konfigurasi paket ruang kerja
secara langsung dari repositori kode dengan file .idx/dev.nix
.
Library paket dan atribut yang dapat Anda tentukan dalam file ini mengikuti
sintaksis kumpulan atribut Nix.
Contoh berikut menunjukkan konfigurasi lingkungan dasar yang mengaktifkan pratinjau:
{ 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";
};
};
};
}
Atribut dan library paket Nix
paket
Paket yang akan diinstal di lingkungan.
Anda dapat menggunakan argumen pkgs
untuk memilih paket yang akan diinstal, yaitu pkgs.python3
.
Perlu diperhatikan bahwa konten pkgs
bergantung pada opsi saluran channel
yang dipilih.
Contoh:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Anda dapat menelusuri paket yang tersedia di sini: stable-23.11 atau unstable.
Type: daftar paket
Default:
[ ]
saluran
saluran nixpkgs.
Saluran ini menentukan konten argumen pkgs
.
Jenis: salah satu dari “stable-23.05”, “stable-23.11”, “unstable”
Default:
"stable-23.11"
env
Variabel lingkungan yang ditetapkan di dalam lingkungan developer.
Keduanya akan disebarkan ke semua shell Anda dan server pratinjau. Variabel lingkungan bisa sangat berguna jika aplikasi Anda memerlukan kumpulan variabel tertentu.
Contoh:
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
Jenis: kumpulan atribut apa pun
Default:
{ }
idx.extensions
Ekstensi kode yang ingin Anda instal di ruang kerja IDX Anda.
Ini adalah daftar ID ekstensi yang sepenuhnya memenuhi syarat, yaitu ${publisherId}.${extensionId}
.
Anda dapat menemukan daftar ekstensi yang tersedia di Open VSX Registry dan memasukkannya ke dalam file dev.nix
paling lambat ${publisherId}.${extensionId}
.
Jenis: daftar (string atau jalur yang tidak kosong)
Default:
[ ]
idx.previews.enable
Tetapkan string ini ke true
untuk mengaktifkan Pratinjau IDX.
Fitur ini memberikan cara untuk menjalankan dan memuat ulang aplikasi Anda secara otomatis saat Anda mengembangkannya.
Jenis: boolean
Default:
true
Contoh:
true
idx.previews.previews
Pratinjau konfigurasi.
Tentukan perintah yang dijalankan IDX di lingkungan developer Anda.
Contoh:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Jenis: kumpulan atribut (submodul)
Default:
{ }
perintah{i> idx.previews.previews.*.<i}
Perintah yang akan dijalankan
Jenis: daftar string
Default:
[ ]
{i>idx.previews.previews.*.cwd<i}
Direktori yang berfungsi
Jenis: string
Default:
""
idx.previews.previews.*.env
Variabel lingkungan yang akan ditetapkan.
Jenis: kumpulan atribut string
Default:
{ }
idx.previews.previews.*.manager
Manajer
Jenis:
salah satu dari web
, flutter
idx.workspace.onCreate
Perintah yang akan dijalankan saat ruang kerja dibuat dan dibuka untuk pertama kalinya.
Hal ini dapat berguna untuk menyiapkan lingkungan pengembangan. Misalnya, di sini kita
menentukan npm install
untuk dijalankan:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
Jenis: kumpulan atribut (jalur atau string)
Default:
{ }
idx.workspace.onStart
Perintah yang akan dijalankan setiap kali ruang kerja dibuka.
Hal ini dapat berguna untuk mulai membangun watcher. Misalnya, di sini kami menentukan 2 perintah untuk dijalankan:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
Jenis: kumpulan atribut (jalur atau string)
Default:
{ }
services.docker.enable
Apakah akan mengaktifkan Docker Rootless.
Jenis: boolean
Default:
false
Contoh:
true