L'objectif de Project IDX est d'être aussi utile que possible pour les développeurs. IDX permet par exemple d'offrir aux développeurs la liberté et la flexibilité d'installer les bons outils pour n'importe quel projet dans leur espace de travail et de personnaliser les paramètres afin que leurs espaces de travail leur conviennent.
Nix + IDX
IDX définit la configuration de l'environnement de chaque espace de travail à l'aide de Nix. Nix est un gestionnaire de paquets purement fonctionnel et attribue des identifiants uniques à chaque dépendance, ce qui signifie au final que votre environnement peut contenir plusieurs versions de la même dépendance, de manière fluide. Elle est également reproductible et déclarative. Dans le contexte d'IDX, cela signifie que vous pouvez partager votre fichier de configuration Nix entre plusieurs espaces de travail afin de charger la même configuration d'environnement.
IDX définit les configurations de l'environnement d'aperçu et du package de l'espace de travail directement à partir du dépôt de code à l'aide du fichier .idx/dev.nix
.
Les attributs et les bibliothèques de packages que vous pouvez définir dans ce fichier respectent la syntaxe des ensembles d'attributs Nix.
L'exemple suivant présente une configuration d'environnement de base permettant d'activer 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";
};
};
};
}
Attributs Nix et bibliothèques de packages
colis
Packages à installer dans l'environnement.
Vous pouvez utiliser l'argument pkgs
pour sélectionner les packages à installer, par exemple pkgs.python3
.
Notez que le contenu de pkgs
dépend de l'option de chaîne channel
sélectionnée.
Exemple :
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Vous pouvez rechercher les packages disponibles ici: stable-23.11 ou unstable.
Type:liste des packages
Par défaut:[ ]
chaîne
nixpkgs.
Ce canal définit le contenu de l'argument pkgs
.
Type : "stable-23.05", "stable-23.11" ou "unstable"
Par défaut:"stable-23.11"
env
Variables d'environnement définies dans l'environnement de développement
Celles-ci sont propagées à tous vos shells et au serveur d'aperçu. Les variables d'environnement peuvent être particulièrement utiles si votre application nécessite un ensemble spécifique de variables.
Exemple :
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
Type:ensemble d'attributs de n'importe quel élément
Par défaut:{ }
idx.extensions
Extensions de code que vous souhaitez installer dans votre espace de travail IDX.
Voici une liste d'ID d'extension complets, à savoir ${publisherId}.${extensionId}
.
Vous trouverez la liste des extensions disponibles dans le registre Open VSX Registry (Ouvrir le registre VSX) et saisissez-les dans votre fichier dev.nix
en saisissant ${publisherId}.${extensionId}
.
Type:liste de (chaîne ou chemin d'accès non vide)
Par défaut:[ ]
idx.previews.enable
Définissez cette valeur sur true
pour activer les aperçus IDX.
Cette fonctionnalité permet d'exécuter et d'actualiser automatiquement vos applications au fur et à mesure que vous les développez.
Type:booléen
Par défaut:true
Exemple:
true
idx.previews.previews
Prévisualiser les configurations
Définissez les commandes qu'IDX exécute dans votre environnement de développement.
Exemple :
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Type:ensemble d'attributs de (sous-module)
Par défaut:{ }
idx.previews.previews.*.command
Commande à exécuter
Type:liste de chaînes
Par défaut:[ ]
idx.previews.previews.*.cwd
Répertoire de travail
Type:chaîne
Par défaut:""
idx.previews.previews.*.env
Variables d'environnement à définir.
Type:ensemble d'attributs de chaîne
Par défaut:{ }
idx.previews.previews.*.manager
Chef
Type:web
, flutter
idx.workspace.onCreate
Commandes à exécuter lorsque l'espace de travail est créé et ouvert pour la première fois.
Cela peut être utile pour configurer l'environnement de développement. Par exemple, ici, nous spécifions npm install
à exécuter:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
Type:ensemble d'attributs de (chemin ou chaîne)
Par défaut:{ }
idx.workspace.onStart
Commandes à exécuter chaque fois que l'espace de travail est ouvert.
Cela peut être utile pour lancer des observateurs de compilation. Par exemple, ici, nous spécifions deux commandes à exécuter:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
Type:ensemble d'attributs de (chemin ou chaîne)
Par défaut:{ }
services.docker.enable
Activer ou non le mode Docker sans racine.
Type:booléen
Par défaut:false
Exemple:
true