התאמה אישית של סביבת העבודה של 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";
  };
}

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

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

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.<name>.command

פקודה להפעלה

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

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

idx.previews.previews.<name>.cwd

ספריית עבודה

סוג: מחרוזת

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

idx.previews.previews.<name>.env

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

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

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

idx.previews.previews.<name>.manager

ניהול

סוג: אחד מ-"web", "flutter"

idx.workspace.onCreate

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

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

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

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

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

idx.workspace.onStart

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

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

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

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

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

services.docker.enable

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

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.mysql.enable

האם להפעיל את שרת MySQL.

השרת מאותחל באמצעות בסיס משתמש ללא סיסמה. לכן כדי ליצור משתמשים נוספים וליצור מסדי נתונים, השתמשו ב-mysql -u root. .

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.mysql.package

חבילת MySQL לשימוש.

סוג: חבילה

ברירת מחדל: pkgs.mysql

לדוגמה: pkgs.mysql80

services.postgres.enable

האם להפעיל את שרת PostgreSQL.

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.postgres.package

חבילת PostgreSQL לשימוש.

סוג: חבילה

ברירת מחדל: pkgs.postgresql

לדוגמה: pkgs.postgresql_15

services.postgres.extensions

תוספי Postgres להתקנה.

"Type: list of (one of "age", "apache_datasketches", "cstore_fdw", "hypopg", "jsonb_deep_sum", "periods", "pg_auto_failover", "pg_autopdata",

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

לדוגמה: [ "pgvector" "postgis" ];

services.pubsub.enable

האם להפעיל את האמולטור Google Pub/Sub.

ניתן למצוא תיעוד נוסף על השימוש באמולטור כאן: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.pubsub.port

המדיניות הזו מגדירה את היציאה ש-Pub/Sub יאזין לה.

סוג: מספר שלם לא חתום של 16 ביט, בין 0 ל-65535 (כולל שניהם)

ברירת מחדל: 8085

services.pubsub.project-id

מזהה הפרויקט שמשמש להפעלת אמולטור Pub/Sub. הפרויקט הזה מיועד לבדיקה בלבד. הוא לא חייב להיות קיים ומשמש רק באופן מקומי.

סוג: מחרוזת שתואמת לדפוס [a-z][a-z0-9-]{5,29}

ברירת מחדל: "idx-pubsub-emulator"

services.redis.enable

האם להפעיל את שרת Redis.

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.redis.port

המדיניות הזו מגדירה את היציאה ש-Redis יאזין לה.

כברירת מחדל, tcp מושבת ו-redis מאזין רק ב-/tmp/redis/redis.sock.

סוג: מספר שלם לא חתום של 16 ביט, בין 0 ל-65535 (כולל שניהם)

ברירת מחדל: 0

services.spanner.enable

האם להפעיל את Google Cloud Spanner Emulator.

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.spanner.fault-injection

האם לאפשר הזרקה אקראית של כשלים לטרנספורמציות.

סוג: בוליאני

ברירת מחדל: false

לדוגמה: true

services.spanner.grpc-port

יציאת ה-TCP שאליה צריך לקשר את האמולטור.

סוג: מספר שלם לא חתום של 16 ביט, בין 0 ל-65535 (כולל שניהם)

ברירת מחדל: 9010

services.spanner.rest-port

השקע שבו מוצגות בקשות REST

סוג: מספר שלם לא חתום של 16 ביט, בין 0 ל-65535 (כולל שניהם)

ברירת מחדל: 9020