Dostosowywanie obszaru roboczego IDX

Project IDX umożliwia dostosowanie obszaru roboczego do unikalnych potrzeb projektu przez zdefiniowanie pojedynczego pliku konfiguracji .idx/dev.nix, który opisuje:

  • Narzędzia systemowe, które muszą być możliwe do uruchomienia (np. z poziomu terminala), takie jak kompilatory i inne pliki binarne.
  • Rozszerzenia IDE, które musisz zainstalować (na przykład obsługa języka programowania).
  • Jak powinny wyglądać podglądy aplikacji (np. polecenia do uruchomienia serwera WWW).
  • Globalne zmienne środowiskowe dostępne dla serwerów lokalnych działających w Twoim obszarze roboczym.

Pełny opis dostępnych opcji znajdziesz w dokumentacji dev.nix.

Nix i IDX

IDX używa Nix do definiowania konfiguracji środowiska dla każdego obszaru roboczego. W szczególności IDX wykorzystuje:

  • Język programowania Nix do opisywania środowisk Workspace. Nix to funkcjonalny język programowania. Atrybuty i biblioteki pakietów, które możesz zdefiniować w pliku dev.nix, mają składnię zestawu atrybutów Nix.

  • Menedżer pakietów Nix do zarządzania narzędziami systemowymi dostępnymi w obszarze roboczym. Przypomina to menedżery pakietów konkretnych systemów operacyjnych, takie jak APT (apt i apt-get), Homebrew (brew) czy dpkg.

Środowiska Nix można odtwarzać i deklarować, więc w kontekście IDX oznacza to, że możesz udostępnić plik konfiguracji Nix jako część repozytorium Git, aby mieć pewność, że wszyscy pracownicy pracujący nad Twoim projektem mają tę samą konfigurację środowiska.

Podstawowy przykład

Poniższy przykład pokazuje podstawową konfigurację środowiska, która włącza podglądy:

{ 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";
      };
    };
  };
}

Dodaj narzędzia systemowe

Aby dodać do obszaru roboczego narzędzia systemowe, takie jak kompilatory lub programy interfejsu wiersza poleceń dla usług w chmurze, znajdź unikalny identyfikator pakietu w rejestrze pakietów Nix i dodaj go do obiektu packages pliku dev.nix z prefiksem „pkgs”.

{ 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
  ];
  ...
}

Różni się to od sposobu, w jaki zazwyczaj instalujesz pakiety systemowe za pomocą menedżerów pakietów dostosowanych do systemu operacyjnego, takich jak APT (apt i apt-get), Homebrew (brew) czy dpkg. Deklaracyjne opisanie dokładnie, które pakiety systemowe są potrzebne, ułatwia udostępnianie i odtwarzanie obszarów roboczych IDX.

Użyj plików binarnych węzłów lokalnych

Tak jak w przypadku komputera lokalnego, pliki binarne powiązane z lokalnie zainstalowanymi pakietami węzłów (tj. pakiety zdefiniowane w elemencie package.json) można uruchamiać w panelu terminala przez wywołanie ich za pomocą polecenia npx.

Jeśli jesteś w katalogu z folderem node_modules (np. w katalogu głównym projektu internetowego), pliki binarne zainstalowane lokalnie można wywołać bezpośrednio, bez prefiksu npx.

Dodaj komponenty (gcloud)

Domyślna konfiguracja interfejsu wiersza poleceń gcloud dla Google Cloud jest dostępna dla wszystkich obszarów roboczych IDX.

Jeśli potrzebujesz dodatkowych komponentów, możesz dodać je do pliku dev.nix w następujący sposób:

{ pkgs }: {
  packages = [
    ...
    (pkgs.google-cloud-sdk.withExtraComponents [
      pkgs.google-cloud-sdk.components.cloud-datastore-emulator
    ])
    ...
  ];
}

Dodaj rozszerzenia IDE

Rozszerzenia w IDX możesz instalować przy użyciu rejestru rozszerzeń OpenVSX na 2 sposoby:

  • Za pomocą panelu Rozszerzenia w IDX możesz wykrywać i instalować rozszerzenia. Ta metoda najlepiej sprawdza się w przypadku rozszerzeń związanych z konkretnymi użytkownikami, takich jak:

    • Niestandardowe motywy kolorystyczne
  • Przez dodanie rozszerzeń do pliku dev.nix. Te rozszerzenia zostaną automatycznie zainstalowane, gdy udostępnisz konfigurację obszaru roboczego. Ta metoda najlepiej sprawdza się w przypadku rozszerzeń związanych z projektem, takich jak:

    • rozszerzenia językowe programowania, w tym debugery dla różnych języków;
    • Oficjalne rozszerzenia usług w chmurze używanych w Twoim projekcie
    • Programy do formatowania kodu

Jeśli wybierzesz tę drugą metodę, możesz uwzględnić rozszerzenia IDE w pliku dev.nix, znajdując pełny identyfikator rozszerzenia (o formacie <publisher>.<id>) i dodając go do obiektu idx.extensions w ten sposób:

{ pkgs, ... }: {
  ...
  # Search for the extensions you want on https://open-vsx.org/ and use the format
  # "<publisher>.<id>"
  idx.extensions = [
    "angular.ng-template"
  ];
  ...
}

Dodaj popularne usługi

IDX upraszcza też konfigurację typowych usług, których możesz potrzebować podczas programowania, takich jak:

  • Kontenery
    • Docker (services.docker.*)
  • Wiadomości
    • Emulator Pub/Sub (services.pubsub.*)
  • Bazy danych
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • Redis (services.redis.*)
    • Spanner (services.spanner.*)

Szczegółowe informacje na temat włączania tych usług w obszarze roboczym znajdziesz w częściach services.* w dokumentacji dev.nix.

Dostosowywanie podglądu

Szczegółowe informacje o tym, jak dostosować podglądy aplikacji, znajdziesz w dokumentacji podglądów.

Zobacz wszystkie opcje dostosowywania

Szczegółowy opis schematu konfiguracji środowiska znajdziesz w dokumentacji dev.nix.