בדף הזה מפורטים פרטים על הסכימה של קובץ התצורה של סביבת סביבת העבודה, שצריך תמיד להיות ממוקם ב-.idx/dev.nix
.
מידע נוסף על שפת Nix זמין במדריך הרשמי לשפת 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, stable-24.05, stable-24.11, unstable
ברירת מחדל: "stable-23.11"
env
משתני סביבה שמוגדרים בסביבת הפיתוח.
הם מועברים לכל המעטפות ולשרת התצוגה המקדימה. משתני סביבה יכולים להיות שימושיים במיוחד אם באפליקציה שלכם דרושה קבוצה ספציפית של משתנים.
הערך של כל משתנה יכול להיות מחרוזת או רשימה של מחרוזות. החלק השני מקושר ביניהם, עם תווים של נקודתיים.
PATH
חייב להיות רשימה, כי היא תמיד מורחבת ולא מוחלפת לחלוטין.
דוגמה:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
סוג: קבוצת מאפיינים של ((רשימת מחרוזות) או כל דבר אחר)
ברירת מחדל: { }
idx.extensions
תוספים של קוד שרוצים להתקין בסביבת העבודה של IDX.
זוהי רשימה של מזהי תוספים מוגדרים במלואם, לדוגמה ${publisherId}.${extensionId}
.
רשימה של התוספים הזמינים מופיעה ב-Open VSX Registry, וניתן להזין אותם בקובץ dev.nix
באמצעות ${publisherId}.${extensionId}
.
סוג: רשימה של (מחרוזת או נתיב לא ריקים)
ברירת מחדל: [ ]
idx.previews.enable
כדי להפעיל תצוגות מקדימות של IDX, מגדירים את הערך הזה כ-true
.
התכונה הזו מאפשרת להריץ את האפליקציות ולטעון אותן מחדש באופן אוטומטי בזמן הפיתוח.
סוג: boolean (בוליאני)
ברירת מחדל: 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>.activity
פעילות ההשקה של Android
סוג: string (מחרוזת)
ברירת מחדל: ""
idx.previews.previews.<name>.command
הפקודה לביצוע
סוג: רשימה של מחרוזת
ברירת מחדל: [ ]
idx.previews.previews.<name>.cwd
ספריית העבודה
סוג: string (מחרוזת)
ברירת מחדל: ""
idx.previews.previews.<name>.env
משתני הסביבה שרוצים להגדיר.
סוג: קבוצת מאפיינים של מחרוזת
ברירת מחדל: { }
idx.previews.previews.<name>.manager
מנהל
סוג: אחד מהערכים הבאים: 'web', 'flutter', 'android', 'gradle'
idx.workspace.onCreate
פקודות לביצוע כשמרחב העבודה נוצר ונפתח בפעם הראשונה.
האפשרות הזו יכולה להיות שימושית להגדרת סביבת הפיתוח. לדוגמה, כאן מציינים את npm install
כדי להריץ:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
# files to open when the workspace is first opened.
default.openFiles = [ "src/index.ts" ];
};
}
סוג: קבוצת מאפיינים של (נתיב או מחרוזת או ({ openFiles = [ string ];}))
ברירת מחדל: { }
idx.workspace.onStart
פקודות שיופעלו בכל פעם שסביבת העבודה תיפתח.
אפשר להשתמש בזה כדי להתחיל לעקוב אחרי גרסאות build. לדוגמה, כאן מצוינות 2 פקודות להרצה:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
# files to open when the workspace is (re)opened.
default.openFiles = [ "src/index.ts" ];
};
}
סוג: קבוצת מאפיינים של (נתיב או מחרוזת או ({ openFiles = [ string ];}))
ברירת מחדל: { }
ייבוא
אפשר להרחיב את הקובץ dev.nix באמצעות קובץ שיובאו.
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
יש כמה סיבות לכך שתרצו לייבא קובץ .nix
בהתאמה אישית ב-dev.nix
:
קובץ ה-
dev.nix
גדול ואתם רוצים לפצל אותו למודול כדי לשפר את יכולת התחזוקה שלו.{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }
אתם רוצים להגדיר אפשרויות ספציפיות לסביבה המקומית ולהוסיף את הקובץ לרשימת
.gitignore
.# dev.nix { pkgs, lib, ... }: { # ... imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ]; }
#.gitignore .idx/dev.local.nix
סוג: רשימת נתיב
ברירת מחדל: [ ]
services
שירותים נפוצים שאפשר להפעיל כשמרחב העבודה נפתח.
לדוגמה, כדי להפעיל את Postgres ולהשתמש בתוסף pgvector
, מוסיפים את הקטע הבא לקובץ dev.nix
:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
בקטעים הבאים מפורטים כל השירותים הנתמכים והאפשרויות שניתן להגדיר בהם.
services.docker.enable
האם להפעיל את Rootless docker.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.mongodb.enable
האם להפעיל את שרת MongoDB.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.mongodb.package
חבילת MongoDB לשימוש.
סוג: package
ברירת מחדל: <derivation mongodb-6.0.11>
services.mongodb.port
הגדרת היציאה שבה Mongod יקשיב.
כברירת מחדל, TCP מושבת ו-Mongod מקשיב רק ב-/tmp/mongodb/mongodb.sock.
כדי להתחבר, משתמשים במחרוזת החיבור mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock
.
סוג: מספר שלם ללא סימן באורך 16 ביט, בין 0 ל-65535 (כולל)
ברירת מחדל: 0
services.mysql.enable
האם להפעיל את שרת MySQL.
השרת מאותחל עם משתמש root ללא סיסמה. כדי ליצור משתמשים נוספים וליצור מסדי נתונים, משתמשים בפונקציה mysql -u root
.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.mysql.package
חבילת MySQL לשימוש.
סוג: package
ברירת מחדל: pkgs.mysql
דוגמה: pkgs.mysql80
services.postgres.enable
האם להפעיל את שרת PostgreSQL.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.postgres.enableTcp
האם להפעיל את Postgres להאזנה ב-TCP.
סוג: boolean (בוליאני)
ברירת מחדל: true
דוגמה: true
services.postgres.package
חבילת PostgreSQL שבה רוצים להשתמש.
סוג: package
ברירת מחדל: pkgs.postgresql
דוגמה: pkgs.postgresql_15
services.postgres.extensions
תוספים של Postgres להתקנה.
סוג: רשימה של (אחד מהאפשרויות הבאות: age, apache_datasketches, cstore_fdw, hypopg, jsonb_deep_sum, periods, pg_auto_failover, pg_bigm, pg_cron, pg_ed25519, pg_embedding, pg_hint_plan, pg_hll, pg_ivm, pg_net, pg_partman, pg_rational, pg_relusage, pg_repack, pg_safeupdate, pg_similarity, pg_topn, pg_uuidv7, pgaudit, pgjwt, pgroonga, pgrouting, pgsql-http, pgtap, pgvector, plpgsql_check, plr, plv8, postgis, promscale_extension, repmgr, rum, smlar, tds_fdw, temporal_tables, timescaledb, timescaledb-apache, timescaledb_toolkit, tsearch_extras, tsja, wal2json)
ברירת מחדל: [ ]
דוגמה: [ "pgvector" "postgis" ];
services.pubsub.enable
האם להפעיל את אמולטור Google Pub/Sub.
מידע נוסף על השימוש במהדורת האפליקציה לניהול נתונים זמין כאן: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .
סוג: boolean (בוליאני)
ברירת מחדל: 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.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.redis.port
הגדרת היציאה שבה Redis יקשיב.
כברירת מחדל, TCP מושבת ו-Redis מקשיב רק ב-/tmp/redis/redis.sock.
סוג: מספר שלם ללא סימן באורך 16 ביט, בין 0 ל-65535 (כולל)
ברירת מחדל: 0
services.spanner.enable
האם להפעיל את Google Cloud Spanner Emulator.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.spanner.fault-injection
האם להפעיל הזרקת שגיאות אקראיות לעסקאות.
סוג: boolean (בוליאני)
ברירת מחדל: false
דוגמה: true
services.spanner.grpc-port
יציאת ה-TCP שאליה צריך לקשר את האמולטור.
סוג: מספר שלם ללא סימן באורך 16 ביט, בין 0 ל-65535 (כולל)
ברירת מחדל: 9010
services.spanner.rest-port
היציאה שבה מתקבלות בקשות ה-REST
סוג: מספר שלם ללא סימן באורך 16 ביט, בין 0 ל-65535 (כולל)
ברירת מחדל: 9020