התאמה אישית של סביבת העבודה של IDX

המטרה של Project IDX היא להיות שימושיים ככל האפשר למפתחים. אחת מהדרכים שבהן IDX עושה זאת היא לתת למפתחים חופש וגמישות להתקין את הכלים המתאימים לכל פרויקט נתון בסביבת העבודה שלהם, ולהתאים אישית את ההגדרות כך שסביבות העבודה שלהם יתאימו להם.

Nix + IDX

IDX משתמש ב-Nix כדי להגדיר את הגדרות הסביבה לכל סביבת עבודה. Nix הוא מנהל חבילות שמתפקד במלואו, והוא מקצה מזהים ייחודיים לכל תלות, וכתוצאה מכך בסופו של דבר הסביבה שלכם יכולה להכיל מספר גרסאות של אותה תלות בצורה חלקה. הוא גם ניתן לשחזור ולהצהרה. בהקשר של IDX, המשמעות היא שאתם יכולים לשתף את קובץ התצורה של Nix בין סביבות עבודה כדי לטעון את אותה ההגדרה של הסביבה.

IDX מגדיר את סביבת התצוגה המקדימה ואת ההגדרות של חבילות סביבת העבודה ישירות ממאגר הקודים עם הקובץ .idx/dev.nix. המאפיינים וספריות החבילות שאפשר להגדיר בקובץ הזה בנויים לפי התחביר של קבוצת המאפיינים של Nix.

הדוגמה הבאה מציגה תצורה בסיסית של הסביבה שמאפשרת תצוגות מקדימות:

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

מאפייני Nix וספריות חבילות

חבילות

חבילות להתקנה בסביבה.

אפשר להשתמש בארגומנט pkgs כדי לבחור חבילות להתקנה, כלומר pkgs.python3. חשוב לשים לב שהתוכן של pkgs תלוי באפשרות שנבחרה לערוץ channel.

דוגמה:

{pkgs, ...}: {
  channel = "stable-23.11";
  packages = [pkgs.vim];
}

אפשר לחפש חבילות זמינות כאן: stable-23.11 או unstable (לא יציב).

סוג: רשימת החבילות

ברירת מחדל: [ ]

ערוץ

של ערוץ nixpkgs לשימוש.

הערוץ הזה מגדיר את התוכן של הארגומנט pkgs.

סוג: אחד מתוך "stable-23.05", "stable-23.11", "unstable"

ברירת מחדל: "stable-23.11"

env

משתני סביבה שמוגדרים בסביבת הפיתוח.

הקבצים האלה יועתקו לכל המעטפת ולשרת התצוגה המקדימה. משתני סביבה יכולים להיות שימושיים במיוחד אם האפליקציה דורשת קבוצה ספציפית של משתנים.

דוגמה:

{pkgs, ...}: {
  env = {
    HELLO = "world";
  };
}

Type: קבוצת המאפיינים של כל דבר

ברירת מחדל: { }

idx.extensions

תוספי קוד שרוצים להתקין בסביבת העבודה של IDX.

זוהי רשימה של מזהי תוספים שמוגדרים במלואם, כלומר ${publisherId}.${extensionId}.

אפשר למצוא רשימה של התוספים הזמינים בOpen VSX Registry ולהזין אותם בקובץ dev.nix עד ${publisherId}.${extensionId}.

סוג: רשימה של (מחרוזת או נתיב שאינם ריקים)

ברירת מחדל: [ ]

idx.previews.enable

צריך להגדיר את הערך הזה לערך true כדי להפעיל תצוגות מקדימות של IDX.

התכונה הזו מאפשרת להריץ אפליקציות ולטעון אותן מחדש באופן אוטומטי בזמן שאתם מפתחים אותן.

סוג: בוליאני

ברירת מחדל: true

לדוגמה: true

idx.previews.previews

תצוגה מקדימה של ההגדרות.

מגדירים את הפקודות ש-IDX מבצע בסביבת המפתח שלכם.

דוגמה:

{pkgs, ...}: {
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = ["yes"];
        cwd = "subfolder";
        manager = "web";
        env = {
          HELLO = "world";
        };
      };
    };
  };
}

סוג: קבוצת המאפיינים של (מודול משנה)

ברירת מחדל: { }

idx.previews.previews.*.command

פקודה להפעלה

סוג: רשימה של מחרוזת

ברירת מחדל: [ ]

idx.previews.previews.*.cwd

ספריית עבודה

סוג: מחרוזת

ברירת מחדל: ""

idx.previews.previews.*.env

משתני סביבה להגדרה.

סוג: קבוצת המאפיינים של המחרוזת

ברירת מחדל: { }

idx.previews.previews.*.manager

ניהול

סוג: אחד מתוך web, flutter

idx.workspace.onCreate

פקודות להפעלה בזמן שיוצרים את סביבת העבודה ופותחים אותה בפעם הראשונה.

האפשרות הזאת יכולה להיות שימושית כדי להגדיר את סביבת הפיתוח. לדוגמה, כאן מציינים את npm install שרוצים להריץ:

{pkgs, ...}: {
  idx.workspace.onCreate = {
    npm-install = "npm install";
  };
}

סוג: קבוצת מאפיינים של (נתיב או מחרוזת)

ברירת מחדל: { }

idx.workspace.onStart

פקודות להפעלה בכל פעם שסביבת העבודה נפתחת.

המידע הזה יכול להיות שימושי כדי להתחיל ליצור צופים. לדוגמה, כאן מציינים 2 פקודות להרצה:

{pkgs, ...}: {
  idx.workspace.onStart = {
    npm-watch-fe = "npm run watch:frontend";
    npm-watch-be = "npm run watch:backend";
  };
}

סוג: קבוצת מאפיינים של (נתיב או מחרוזת)

ברירת מחדל: { }

services.docker.enable

האם להפעיל את עגינה ללא Root.

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true