IDX-Arbeitsbereich anpassen

Das Ziel von Project IDX ist es, für Entwickler so nützlich wie möglich zu sein. IDX kann dies erreichen, indem es Entwicklern die Freiheit und Flexibilität gibt, die richtigen Tools für ein bestimmtes Projekt in ihrem Arbeitsbereich zu installieren und die Einstellungen so anzupassen, dass die Arbeitsbereiche für sie funktionieren.

Nix + IDX

IDX verwendet Nix, um die Umgebungskonfiguration für jeden Arbeitsbereich zu definieren. Nix ist ein rein funktionierender Paketmanager und weist jeder Abhängigkeit eindeutige Kennzeichnungen zu. Dies bedeutet letztendlich, dass Ihre Umgebung nahtlos mehrere Versionen derselben Abhängigkeit enthalten kann. Sie ist außerdem reproduzierbar und deklarativ. Im Kontext von IDX bedeutet dies, dass Sie Ihre Nix-Konfigurationsdatei über Arbeitsbereiche hinweg freigeben können, um dieselbe Umgebungskonfiguration zu laden.

IDX definiert die Konfiguration der Vorschauumgebung und des Arbeitsbereichspakets direkt aus dem Code-Repository mit der Datei .idx/dev.nix. Die Attribute und Paketbibliotheken, die Sie in dieser Datei definieren können, folgen der Syntax von Nix-Attributsätzen.

Das folgende Beispiel zeigt eine grundlegende Umgebungskonfiguration zum Aktivieren der Vorschau:

{ 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-Attribute und Paketbibliotheken

Pakete

Pakete, die in der Umgebung installiert werden sollen.

Sie können das Argument pkgs verwenden, um zu installierende Pakete auszuwählen, z.B. pkgs.python3. Beachte, dass der Inhalt von pkgs von der ausgewählten Kanaloption channel abhängt.

Beispiel:

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

Hier können Sie nach verfügbaren Paketen suchen: stable-23.11 oder unstable.

Typ: Liste des Pakets

Standard: [ ]

Kanal

zu verwenden.

Dieser Kanal definiert den Inhalt des Arguments pkgs.

Typ:entweder „stable-23.05“, „stable-23.11“ oder „unstable“

Standard: "stable-23.11"

env

Umgebungsvariablen, die in der Entwicklungsumgebung festgelegt werden.

Diese werden an alle Shells und den Vorschauserver weitergegeben. Umgebungsvariablen können besonders nützlich sein, wenn Ihre Anwendung einen bestimmten Satz von Variablen erfordert.

Beispiel:

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

Type:beliebiger Attributsatz

Standard: { }

idx.extensions

Codeerweiterungen, die Sie in Ihrem IDX-Arbeitsbereich installieren möchten.

Dies ist eine Liste voll qualifizierter Erweiterungs-IDs wie ${publisherId}.${extensionId}.

Eine Liste der verfügbaren Erweiterungen finden Sie in VSX Registry öffnen. Geben Sie sie bis zum ${publisherId}.${extensionId} in Ihre dev.nix-Datei ein.

Typ: Liste von (nicht leerer String oder Pfad)

Standard: [ ]

idx.previews.enable

Legen Sie dafür true fest, um die IDX-Vorschau zu aktivieren.

Mit dieser Funktion können Sie Ihre Apps während der Entwicklung automatisch ausführen und neu laden.

Typ:boolesch

Standard: true

Beispiel: true

idx.previews.previews

Vorschau der Konfigurationen ansehen.

Definieren Sie die Befehle, die IDX in Ihrer Entwicklungsumgebung ausführt.

Beispiel:

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

Type: Attributsatz von (untergeordnetes Modul)

Standard: { }

idx.previews.previews.*.command

Auszuführender Befehl

Typ: Liste des Strings

Standard: [ ]

idx.previews.previews.*.cwd

Arbeitsverzeichnis

Typ:string

Standard: ""

idx.previews.previews.*.env

Umgebungsvariablen festzulegen.

Typ:Attributsatz von String

Standard: { }

idx.previews.previews.*.manager

Abteilungsleitung

Typ:entweder web oder flutter

idx.workspace.onCreate

Befehle, die beim Erstellen und ersten Öffnen des Arbeitsbereichs ausgeführt werden sollen.

Dies kann beim Einrichten der Entwicklungsumgebung hilfreich sein. Hier geben wir beispielsweise npm install zur Ausführung an:

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

Typ:Attributsatz von (Pfad oder String)

Standard: { }

idx.workspace.onStart

Befehle, die immer dann ausgeführt werden, wenn der Arbeitsbereich geöffnet wird.

Dies kann nützlich sein, um Build Watchers zu starten. Hier geben wir beispielsweise zwei auszuführende Befehle an:

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

Typ:Attributsatz von (Pfad oder String)

Standard: { }

services.docker.enable

Gibt an, ob Rootless Docker aktiviert wird.

Typ:boolesch

Standard: false

Beispiel: true