Personalizza la tua area di lavoro IDX

Project IDX ti consente di personalizzare l'area di lavoro in base alle esigenze specifiche del tuo progetto definendo un singolo file di configurazione .idx/dev.nix che descrive:

  • Gli strumenti di sistema che devono essere in grado di eseguire (ad esempio dal terminale), come i compilatori o altri programmi binari.
  • Le estensioni IDE che devi installare (ad esempio, il supporto dei linguaggi di programmazione).
  • Come dovrebbero essere visualizzate le anteprime dell'app (ad esempio, i comandi per eseguire il server web).
  • Variabili di ambiente globali disponibili per i server locali in esecuzione nella tua area di lavoro.

Consulta il riferimento dev.nix per una descrizione completa delle funzionalità disponibili.

Nix e IDX

IDX utilizza Nix per definire la configurazione dell'ambiente per ogni area di lavoro. Nello specifico, IDX utilizza:

  • Il linguaggio di programmazione Nix per descrivere gli ambienti dell'area di lavoro. Nix è un linguaggio di programmazione funzionale. Gli attributi e le librerie di pacchetti che puoi definire nel file dev.nix seguono la sintassi del set di attributi Nix.

  • Il gestore di pacchetti Nix per gestire gli strumenti di sistema disponibili per la tua area di lavoro. Questa soluzione è simile a quella per i gestori di pacchetti specifici del sistema operativo come APT (apt e apt-get), Homebrew (brew) e dpkg.

Poiché gli ambienti Nix sono riproducibili e dichiarativi, nel contesto di IDX, puoi condividere il tuo file di configurazione Nix come parte del tuo repository Git per assicurarti che tutti gli utenti che lavorano al tuo progetto abbiano la stessa configurazione dell'ambiente.

Esempio di base

L'esempio seguente mostra una configurazione di base dell'ambiente che abilita 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";
      };
    };
  };
}

Aggiungi strumenti di sistema

Per aggiungere strumenti di sistema all'area di lavoro, ad esempio compilatori o programmi di interfaccia a riga di comando per i servizi cloud, trova l'ID pacchetto univoco nel registro dei pacchetti Nix e aggiungilo all'oggetto packages del file dev.nix, preceduto dal prefisso "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
  ];
  ...
}

Questo è diverso dalla modalità con cui potresti installare pacchetti di sistema utilizzando gestori di pacchetti specifici del sistema operativo, ad esempio APT (apt e apt-get), Homebrew (brew) e dpkg. Descrivere dichiarativamente esattamente quali pacchetti di sistema sono necessari fa sì che le aree di lavoro IDX siano più facili da condividere e riprodurre.

Usa binari dei nodi locali

Proprio come sulla tua macchina locale, i programmi binari relativi ai pacchetti di nodi installati localmente (ovvero i pacchetti definiti nel tuo package.json) possono essere eseguiti in un riquadro del Terminale richiamandoli con il comando npx.

Per maggiore praticità, se ti trovi in una directory con una cartella node_modules (ad esempio la directory radice di un progetto web), i programmi binari installati in locale possono essere richiamati direttamente, senza il prefisso npx.

Aggiungi gcloud componenti

Una configurazione predefinita dell'interfaccia a riga di comando gcloud per Google Cloud è disponibile per tutte le aree di lavoro IDX.

Se hai bisogno di componenti aggiuntivi, puoi aggiungerli al file dev.nix in questo modo:

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

Aggiungi estensioni IDE

Puoi installare le estensioni in IDX utilizzando il registro delle estensioni OpenVSX in due modi:

  • Tramite il riquadro Estensioni in IDX per scoprire e installare le estensioni. Questo approccio è ideale per le estensioni specifiche per utente, ad esempio:

    • Temi cromatici personalizzati
  • Aggiungendo estensioni al tuo file dev.nix. Queste estensioni verranno installate automaticamente quando condividi la configurazione dell'area di lavoro. Questo approccio è migliore per le estensioni specifiche del progetto, ad esempio:

    • Estensioni dei linguaggi di programmazione, inclusi i debugger specifici dei linguaggi
    • Estensioni ufficiali per i servizi cloud utilizzati nel progetto
    • Formattatori di codice

Per quest'ultimo approccio, puoi includere estensioni IDE nel file dev.nix cercando l'ID estensione completo (nel formato <publisher>.<id>) e aggiungendolo all'oggetto idx.extensions in questo modo:

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

Aggiungi servizi comuni

IDX offre inoltre impostazioni e configurazione semplificate per i servizi più comuni di cui potresti aver bisogno durante lo sviluppo, tra cui:

  • Container
    • Docker (services.docker.*)
  • Messaggistica
    • Emulatore Pub/Sub (services.pubsub.*)
  • Database
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • Redis (services.redis.*)
    • Spanner (services.spanner.*)

Per maggiori dettagli sull'abilitazione di questi servizi nell'area di lavoro, consulta le parti services.* del riferimento dev.nix.

Personalizza le anteprime

Per maggiori dettagli su come personalizzare le anteprime delle tue app, consulta la documentazione sulle anteprime.

Vedi tutte le opzioni di personalizzazione

Consulta la documentazione di riferimento di dev.nix per una descrizione dettagliata dello schema di configurazione dell'ambiente.