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 dont vous avez besoin pour exécuter (par exemple, à partir du Terminal), par exemple des compilateurs ou d'autres binaires.
  • Les extensions IDE dont vous avez besoin (par exemple, le langage de programmation l'assistance technique).
  • Comment les aperçus de votre application doivent s'afficher (par exemple, les commandes permettant d'exécuter votre serveur Web).
  • Des variables d'environnement globales disponibles pour les serveurs locaux s'exécutant dans votre dans l'espace de travail.

Consultez la documentation de référence sur dev.nix pour obtenir de ce qui est disponible.

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:

  • Le langage de programmation Nix pour décrivent 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 suivez les instructions de l'ensemble d'attributs Nix syntaxe.

  • le gestionnaire de paquets Nix pour gérer outils système disponibles pour votre espace de travail. Cette méthode est semblable à celle spécifique à l'OS gestionnaires de packages 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 IDX, cela signifie que vous pouvez partager votre fichier de configuration Nix dans le cadre un dépôt Git pour vous assurer que tous les collaborateurs de votre projet disposent des configuration de l'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 services cloud, trouver l'identifiant de package unique dans le package Nix registre et ajoutez-le au fichier dev.nix Objet packages, précédé de `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
  ];
  ...
}

Ceci est différent de la façon dont vous pourriez généralement installer des packages système en utilisant Gestionnaires de paquets spécifiques au système d'exploitation, tels que APT (apt et apt-get), Homebrew (brew) et dpkg. Décrire de manière déclarative exactement quels packages système sont nécessaires signifie que les espaces de travail IDX sont plus faciles à partager et à reproduire.

Utiliser des binaires de nœuds locaux

Tout comme sur votre machine locale, les binaires liés aux nœuds installés localement les packages (c'est-à-dire les packages définis dans votre package.json) peuvent être exécutés dans une panneau des terminaux en les appelant avec le npx .

Pour plus de commodité, si vous vous trouvez dans un répertoire avec un élément 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 accessible à tous des espaces de travail.

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

{ 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 de la OpenVSX de deux manières:

  • En utilisant le panneau Extensions dans IDX pour découvrir et installer . 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é lorsque vous partagez la configuration de votre espace de travail. Ce est la meilleure 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 d'IDE dans votre fichier dev.nix en recherchant l'ID d'extension complet (au format <publisher>.<id>) et en l'ajoutant à 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 installation et une configuration simplifiées pour les services courants que vous nécessaires pendant le développement, par exemple:

  • Conteneurs <ph type="x-smartling-placeholder">
      </ph>
    • Docker (services.docker.*)
  • Messages <ph type="x-smartling-placeholder">
      </ph>
    • Émulateur Pub/Sub (services.pubsub.*)
  • Bases de données <ph type="x-smartling-placeholder">
      </ph>
    • 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 services.* de la référence dev.nix.

Personnaliser les aperçus

Pour plus de détails sur la personnalisation des aperçus de vos applications, consultez la documentation pour aperçus.

Icône Définir votre espace de travail

Vous pouvez choisir une icône personnalisée pour votre espace de travail en plaçant un fichier PNG nommé icon.png à côté du fichier dev.nix, dans le répertoire .idx. IDX utilisera ensuite cette icône pour représenter votre espace de travail dans votre tableau de bord.

Comme ce fichier peut être enregistré dans un dépôt source (tel que Git), il s'agit d'un un bon moyen d'aider tous ceux qui travaillent sur votre projet à voir la même icône pour votre lorsque vous utilisez IDX. Comme le fichier peut varier d'une branche Git à l'autre, vous pouvez même distinguer visuellement les espaces de travail lorsque vous travaillez en version "bêta" et "production" versions de votre application, par exemple.

Transformez vos personnalisations en modèle

Transformer la configuration de votre environnement en "environnement de démarrage" pour tout le monde pour la création de projets, consultez la documentation sur la création d'un projet modèle.

Voir toutes les options de personnalisation

Pour en savoir plus, consultez la documentation de référence sur dev.nix. du schéma de configuration de l'environnement.