El objetivo de Project IDX es ser lo más útil posible para los desarrolladores. Una forma en que IDX logra esto es darles a los desarrolladores la libertad y la flexibilidad de instalar las herramientas adecuadas para cualquier proyecto en su lugar de trabajo y personalizar la configuración de modo que sus lugares de trabajo funcionen para ellos.
Nix y IDX
IDX usa Nix para definir la configuración del entorno de cada lugar de trabajo. Nix es un administrador de paquetes puramente funcional y asigna identificadores únicos a cada dependencia, lo que, en última instancia, significa que tu entorno puede contener varias versiones de la misma dependencia, sin problemas. También es reproducible y declarativo. En el contexto de IDX, esto significa que puedes compartir tu archivo de configuración Nix en diferentes lugares de trabajo para cargar la misma configuración del entorno.
IDX define el entorno de vista previa y la configuración del paquete del lugar de trabajo directamente desde el repositorio de código con el archivo .idx/dev.nix
.
Los atributos y las bibliotecas de paquetes que puedes definir en este archivo siguen la sintaxis del conjunto de atributos de Ninja.
En el siguiente ejemplo, se muestra una configuración básica del entorno que habilita vistas previas:
{ 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";
};
};
};
}
Atributos Nix y bibliotecas de paquetes
paquetes
Paquetes para instalar en el entorno.
Puedes usar el argumento pkgs
para seleccionar los paquetes que deseas instalar, es decir, pkgs.python3
.
Ten en cuenta que el contenido de pkgs
depende de la opción de canal channel
seleccionada.
Ejemplo:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Puedes buscar paquetes disponibles aquí: stable-23.11 o unstable.
Type: lista de paquetes
Valor predeterminado:
[ ]
canal
nixpkgs para usar.
Este canal define el contenido del argumento pkgs
.
Tipo: Uno de “stable-23.05”, “stable-23.11” o “unstable”
Valor predeterminado:
"stable-23.11"
env
Variables de entorno que se establecen dentro del entorno de desarrollador.
Estos se propagan a todos tus shells y al servidor de vista previa. Las variables de entorno pueden ser especialmente útiles si tu aplicación requiere un conjunto específico de variables.
Ejemplo:
{pkgs, ...}: {
env = {
HELLO = "world";
};
}
Tipo: Conjunto de atributos de cualquier cosa
Valor predeterminado:
{ }
idx.extensions
Extensiones de código que quieres instalar en tu lugar de trabajo de IDX.
Esta es una lista de los IDs de extensiones completamente calificados, es decir, ${publisherId}.${extensionId}
.
Puedes encontrar una lista de extensiones disponibles en Abrir el registro de VSX y, luego, ingresarlas en el archivo dev.nix
antes del ${publisherId}.${extensionId}
.
Tipo: lista de (cadena no vacía o ruta de acceso)
Valor predeterminado:
[ ]
idx.previews.enable
Configúralo como true
para habilitar las vistas previas de IDX.
Esta función proporciona una forma de ejecutar y volver a cargar tus apps automáticamente a medida que las desarrollas.
Tipo: Booleano
Valor predeterminado:
true
Ejemplo:
true
idx.previews.previews
Configuración de vista previa.
Define los comandos que ejecuta IDX en tu entorno de desarrollador.
Ejemplo:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Type: Conjunto de atributos de (submódulo)
Valor predeterminado:
{ }
idx.previews.previews.*.command
Comando para ejecutar
Tipo: lista de cadenas
Valor predeterminado:
[ ]
idx.previews.previews.*.cwd.
Directorio de trabajo
Tipo: cadena
Valor predeterminado:
""
idx.previews.previews.*.env
Variables de entorno que se configurarán.
Tipo: conjunto de atributos de cadena
Valor predeterminado:
{ }
idx.previews.previews.*.manager
Administrador
Tipo: Uno de web
o flutter
idx.workspace.onCreate
Son los comandos que se ejecutan cuando se crea y se abre el lugar de trabajo por primera vez.
Esto puede ser útil para configurar el entorno de desarrollo. Por ejemplo, aquí especificamos npm install
para que se ejecute:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
Tipo: conjunto de atributos (ruta o string)
Valor predeterminado:
{ }
idx.workspace.onStart
Son los comandos que se ejecutan cada vez que se abre el espacio de trabajo.
Esto puede ser útil para comenzar a crear observadores. Por ejemplo, aquí especificamos 2 comandos para que se ejecuten:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
Tipo: conjunto de atributos (ruta o string)
Valor predeterminado:
{ }
services.docker.enable
Indica si se debe habilitar Docker sin raíz.
Tipo: Booleano
Valor predeterminado:
false
Ejemplo:
true