Personnaliser votre espace de travail IDX

Project IDX vous permet d'adapter votre espace de travail aux besoins uniques de votre projet en définissant un seul fichier de configuration .idx/dev.nix qui décrit:

  • Les outils système que vous devez pouvoir exécuter (par exemple, à partir du terminal), tels que des compilateurs ou d'autres binaires.
  • Les extensions IDE dont vous avez besoin (par exemple, compatibilité avec le langage de programmation)
  • Mode d'affichage des aperçus d'application (par exemple, les commandes d'exécution de votre serveur Web).
  • Des variables d'environnement globales disponibles pour les serveurs locaux exécutés dans votre espace de travail

Consultez la documentation de référence sur dev.nix pour obtenir une description complète des fonctionnalités disponibles.

Nix et IDX

IDX utilise Nix pour définir la configuration de l'environnement pour chaque espace de travail. Plus précisément, IDX utilise:

  • Langage de programmation Nix pour décrire les environnements d'espace de travail Nix est un langage de programmation fonctionnel. Les attributs et les bibliothèques de packages que vous pouvez définir dans le fichier dev.nix suivent la syntaxe des ensembles d'attributs Nix.

  • Le gestionnaire de packages Nix pour gérer les outils système disponibles pour votre espace de travail Ce fonctionnement est semblable aux gestionnaires de packages spécifiques à un système d'exploitation, tels que APT (apt et apt-get), Homebrew (brew) et dpkg.

Étant donné que les environnements Nix sont reproductibles et déclaratifs, dans le contexte d'IDX, cela signifie que vous pouvez partager votre fichier de configuration Nix dans votre dépôt Git pour vous assurer que tous ceux qui travaillent sur votre projet disposent de la même configuration d'environnement.

Exemple de base

L'exemple suivant présente une configuration d'environnement de base activant les aperçus:

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

Ajouter des outils système

Pour ajouter des outils système à votre espace de travail, tels que des compilateurs ou des programmes CLI pour les services cloud, recherchez l'ID de package unique dans le registre de packages Nix et ajoutez-le à l'objet packages de votre fichier dev.nix, avec le préfixe "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
  ];
  ...
}

Cela diffère de la manière dont vous installez généralement des packages système à l'aide de gestionnaires de packages spécifiques au système d'exploitation, tels que APT (apt et apt-get), Homebrew (brew) et dpkg. Une description déclarative des packages système nécessaires signifie que les espaces de travail IDX sont plus faciles à partager et à reproduire.

Utiliser des binaires de nœuds locaux

Comme sur votre ordinateur local, les binaires liés aux packages de nœuds installés localement (c'est-à-dire les packages définis dans votre fichier package.json) peuvent être exécutés dans un panneau de terminal en les appelant avec la commande npx.

Si vous vous trouvez dans un répertoire comportant un dossier node_modules (tel que le répertoire racine d'un projet Web), les binaires installés localement peuvent être appelés directement, sans le préfixe npx.

Ajouter des composants gcloud

Une configuration par défaut de la CLI gcloud pour Google Cloud est disponible pour tous les espaces de travail IDX.

Si vous avez besoin de composants supplémentaires, vous pouvez les ajouter à votre fichier dev.nix comme suit:

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

Ajouter des extensions IDE

Vous pouvez installer des extensions dans IDX à l'aide du registre d'extensions OpenVSX de deux manières:

  • En utilisant le panneau Extensions dans IDX pour découvrir et installer des extensions Cette approche est préférable pour les extensions spécifiques à l'utilisateur, telles que:

    • Thèmes de couleurs personnalisés
  • En ajoutant des extensions à votre fichier dev.nix. Ces extensions seront automatiquement installées lorsque vous partagerez la configuration de votre espace de travail. Cette approche est idéale pour les extensions spécifiques à un projet, telles que:

    • Extensions de langage de programmation, y compris les débogueurs spécifiques au langage
    • Extensions officielles pour les services cloud utilisés dans votre projet
    • Outils de mise en forme du code

Pour cette dernière approche, vous pouvez inclure des extensions IDE dans votre fichier dev.nix en recherchant l'ID d'extension complet (au format <publisher>.<id>) et en l'ajoutant à l'objet idx.extensions comme suit:

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

Ajouter des services courants

IDX propose également une configuration et une configuration simplifiées pour les services courants dont vous pourriez avoir besoin pendant le développement, y compris les suivants:

  • Conteneurs
    • Docker (services.docker.*)
  • Messagerie
    • Émulateur Pub/Sub (services.pubsub.*)
  • Bases de données
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • Redis (services.redis.*)
    • Spanner (services.spanner.*)

Pour en savoir plus sur l'activation de ces services dans votre espace de travail, consultez les parties services.* de la documentation de référence dev.nix.

Personnaliser les aperçus

Pour savoir comment personnaliser les aperçus de vos applications, consultez la documentation sur les aperçus.

Voir toutes les options de personnalisation

Consultez la documentation de référence sur dev.nix pour obtenir une description détaillée du schéma de configuration de l'environnement.