Personaliza tu lugar de trabajo de IDX

Project IDX te permite adaptar tu lugar de trabajo a las necesidades únicas de tu proyecto definiendo un solo archivo de configuración .idx/dev.nix que describa lo siguiente:

  • Las herramientas del sistema que necesitas poder ejecutar (por ejemplo, desde la terminal), como compiladores u otros objetos binarios.
  • Las extensiones IDE que debes instalar (por ejemplo, el lenguaje de programación) de Google Cloud).
  • Cómo deberían mostrarse las vistas previas de la app (para por ejemplo, los comandos para ejecutar tu servidor web).
  • Las variables de entorno globales disponibles para los servidores locales que se ejecutan en tu Workspace.

Consulta la referencia de dev.nix para obtener una descripción de lo que hay disponible.

IDX y Nix

IDX usa Nix para definir la configuración del entorno para cada lugar de trabajo. Específicamente, IDX usa lo siguiente:

  • El lenguaje de programación Nix a describir los entornos de lugares de trabajo. Nix es un lenguaje de programación funcional. Los atributos y las bibliotecas de paquetes que puedes definir en el archivo dev.nix sigue el conjunto de atributos Nix sintaxis.

  • El administrador de paquetes Nix para administrar las y las herramientas de sistema disponibles para tu lugar de trabajo. Este enfoque es similar al modelo administradores de paquetes, como APT (apt y apt-get), Homebrew (brew) y dpkg

Como los entornos de Nix son reproducibles y declarativos, en el contexto de IDX, esto significa que puedes compartir tu archivo de configuración Nix como parte de tu repositorio de Git para garantizar que todos los que trabajan en tu proyecto tengan la misma configuración del entorno.

Un ejemplo básico

En el siguiente ejemplo, se muestra una configuración básica del entorno que habilita las 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";
      };
    };
  };
}

Agrega herramientas del sistema

Para agregar herramientas del sistema a tu espacio de trabajo, como compiladores o programas de CLI para servicios en la nube, busca el ID único del paquete en el paquete Nix de registros y agrégalo a tu archivo dev.nix Un objeto packages, con el prefijo “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
  ];
  ...
}

Esto es diferente de lo que harías normalmente en instalar paquetes de sistema Administradores de paquetes específicos del SO, como APT (apt y apt-get), Homebrew (brew) y dpkg. Con una descripción declarativa de los paquetes de sistema que se necesarios significa que los espacios de trabajo de IDX son más fáciles de compartir y reproducir.

Usa objetos binarios de nodos locales

Al igual que en tu máquina local, los objetos binarios relacionados con el nodo instalado localmente Los paquetes (es decir, los paquetes definidos en tu package.json) se pueden ejecutar en un Panel de terminal invocándolos con npx kubectl.

Para mayor comodidad, si estás en un directorio con un node_modules (como el directorio raíz de un proyecto web), objetos binarios instalados de forma local pueden invocarse directamente, sin el prefijo npx.

Cómo agregar componentes de gcloud

Una configuración predeterminada de la CLI de gcloud para Google Cloud está disponible para todos los servicios de IDX. en los espacios de trabajo.

Si necesitas componentes adicionales, puedes agregarlos a tu archivo dev.nix, como entonces:

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

Cómo agregar extensiones de IDE

Puedes instalar extensiones en IDX con el OpenVSX de dos maneras:

  • Con el panel Extensiones de IDX para detectar e instalar extensiones. Este enfoque es mejor para las extensiones específicas del usuario, como las siguientes:

    • Temas de color personalizados
  • Agrega extensiones a tu archivo dev.nix. Estas extensiones se se instalará automáticamente cuando compartas la configuración de tu lugar de trabajo. Esta es mejor para las extensiones específicas de los proyectos, como las siguientes:

    • Extensiones de lenguaje de programación, incluidos depuradores específicos de lenguajes
    • Extensiones oficiales para los servicios en la nube que se usan en tu proyecto
    • Formateadores de código

Para el último enfoque, puedes incluir extensiones de IDE en tu archivo dev.nix. Para ello, busca el ID de extensión completamente calificado (del formulario <publisher>.<id>) y agrégalo a idx.extensions objeto de la siguiente manera:

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

Cómo agregar servicios comunes

IDX también ofrece opciones de configuración simplificadas para servicios comunes que pueden necesitar durante el desarrollo, como

  • Contenedores
    • Docker (services.docker.*)
  • Mensajería
    • Emulador de Pub/Sub (services.pubsub.*)
  • Bases de datos
    • MySQL (services.mysql.*)
    • Postgres (services.postgres.*)
    • Redis (services.redis.*)
    • Spanner (services.spanner.*)

Para obtener detalles sobre cómo habilitar estos servicios en tu lugar de trabajo, consulta el services.* partes de la referencia dev.nix.

Personalizar vistas previas

Para obtener más información sobre cómo personalizar las vistas previas de tu app, consulta la documentación de vistas previas.

Ícono Establece tu lugar de trabajo

Puedes elegir un ícono personalizado para tu lugar de trabajo colocando un archivo PNG llamado icon.png junto al archivo dev.nix, dentro del directorio .idx. IDX utilizarás este ícono para representar tu lugar de trabajo en el panel.

Debido a que este archivo puede registrarse en el control de código fuente (Git), este es un buena manera de ayudar a todos los que trabajan en tu proyecto a ver el mismo ícono en tu el proyecto cuando use IDX. Y, como el archivo puede variar entre las ramas de Git, incluso puede distinguir visualmente los espacios de trabajo cuando trabaje en "beta" y “producción” de actualización de tu app, por ejemplo.

Convierte tus personalizaciones en una plantilla

Para convertir la configuración de tu entorno en un “entorno de inicio” para todos para crear nuevos proyectos, consulta los documentos para crear una plantilla.

Ver todas las opciones de personalización

Consulta la referencia de dev.nix para obtener una del esquema de configuración del entorno.