Personalizza la tua area di lavoro IDX

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