L'obiettivo del progetto IDX è essere il più utile possibile per gli sviluppatori. Uno dei modi in cui IDX riesce a raggiungere questo obiettivo è offrire agli sviluppatori la libertà e la flessibilità di installare gli strumenti giusti per qualsiasi progetto nelle loro aree di lavoro e personalizzare le impostazioni in modo che le loro aree di lavoro si adattino alle loro esigenze.
Nix + IDX
IDX utilizza Nix per definire la configurazione dell'ambiente per ogni area di lavoro. Nix è un gestore di pacchetti puramente funzionale e assegna identificatori univoci a ciascuna dipendenza, il che significa che il tuo ambiente può contenere più versioni della stessa dipendenza senza problemi. È riproducibile e dichiarativa. Nel contesto di IDX, questo significa che puoi condividere il file di configurazione Nix tra le aree di lavoro per caricare la stessa configurazione dell'ambiente.
IDX definisce le configurazioni dell'ambiente di anteprima e dei pacchetti dell'area di lavoro
direttamente dal repository del codice con il file .idx/dev.nix
.
Gli attributi e le librerie di pacchetti che puoi definire in questo file seguono la sintassi del set di attributi Nix.
L'esempio seguente mostra una configurazione di base dell'ambiente che consente le anteprime:
{ 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";
};
};
};
}
Attributi e librerie di pacchetti di Nix
pacchi
Pacchetti da installare nell'ambiente.
Puoi utilizzare l'argomento pkgs
per selezionare i pacchetti da installare, ad esempio pkgs.python3
.
Tieni presente che i contenuti di pkgs
dipendono dall'opzione del canale channel
selezionata.
Esempio:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Puoi cercare i pacchetti disponibili qui: stable-23.11 o unstable.
Tipo: elenco del pacchetto
Predefinita:
[ ]
canale
nixpkgs.
Questo canale definisce i contenuti dell'argomento pkgs
.
Type:stable-23.05", "stable-23.11", "unstable"
Predefinita:
"stable-23.11"
env
Variabili di ambiente impostate all'interno dell'ambiente di sviluppo.
Questi vengono propagati a tutte le shell e al server di anteprima. Le variabili di ambiente possono essere particolarmente utili se l'applicazione richiede un set specifico di variabili.
Esempio:
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
Tipo: l'insieme di attributi qualsiasi cosa
Predefinita:
{ }
idx.extensions
Estensioni di codice che vuoi installare nella tua area di lavoro IDX.
Questo è un elenco di ID estensioni completi, ad esempio ${publisherId}.${extensionId}
.
Puoi trovare un elenco delle estensioni disponibili in Apri il registro VSX e inserirle nel file dev.nix
entro il giorno ${publisherId}.${extensionId}
.
Tipo: elenco di (stringa o percorso non vuoti)
Predefinita:
[ ]
idx.previews.enable
Impostalo su true
per attivare le anteprime IDX.
Questa funzionalità offre un modo per eseguire e ricaricare le app automaticamente durante la loro sviluppo.
Tipo: booleano
Predefinita:
true
Esempio:
true
idx.previews.previews
Configura l'anteprima.
Definisci i comandi che IDX esegue nel tuo ambiente di sviluppo.
Esempio:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Tipo: insieme di attributi di (sottomodulo)
Predefinita:
{ }
idx.previews.previews.*.command
Comando da eseguire
Tipo: elenco di stringhe
Predefinita:
[ ]
idx.previews.previews.*.cwd
Directory di lavoro
Tipo: stringa
Predefinita:
""
idx.previews.previews.*.env
Variabili di ambiente da impostare.
Tipo: set di attributi di stringa
Predefinita:
{ }
idx.previews.previews.*.manager
Gestore
Tipo:
uno tra web
, flutter
idx.workspace.onCreate
Comandi da eseguire quando l'area di lavoro viene creata e aperta per la prima volta.
Questo può essere utile per configurare l'ambiente di sviluppo. Ad esempio, qui specifichiamo
l'esecuzione di npm install
:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
Tipo: insieme di attributi di (percorso o stringa)
Predefinita:
{ }
idx.workspace.onStart
Comandi da eseguire all'apertura dell'area di lavoro.
Può essere utile per iniziare a creare spettatori. Ad esempio, qui specifichiamo 2 comandi da eseguire:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
Tipo: insieme di attributi di (percorso o stringa)
Predefinita:
{ }
services.docker.enable
Se attivare docker Rootless.
Tipo: booleano
Predefinita:
false
Esempio:
true