בדף הזה מפורטת הסכימה של קובץ התצורה של סביבת העבודה, שתמיד צריך להיות ממוקם בנתיב .idx/dev.nix
.
מידע על שפת Nix מפורט במדריך הרשמי לשפת Nix.
חבילות
חבילות להתקנה בסביבה.
אפשר להשתמש בארגומנט pkgs
כדי לבחור חבילות להתקנה, לדוגמה
pkgs.python3
. הערה: התוכן של pkgs
תלוי באפשרות הערוץ שנבחרה channel
.
דוגמה:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
אפשר לחפש חבילות זמינות כאן: stable-23.11 או unstable.
Type: list of package
ברירת מחדל: [ ]
ערוץ
ערוץ nixpkgs לשימוש.
הערוץ הזה מגדיר את התוכן של הארגומנט pkgs
.
Type: אחת מהאפשרויות 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
מגדירים את הערך true
כדי להפעיל תצוגות מקדימות של IDX.
התכונה הזו מאפשרת להריץ ולטעון מחדש את האפליקציות באופן אוטומטי בזמן הפיתוח שלהן.
סוג: בוליאני
ברירת מחדל: true
דוגמה: true
idx.previews.previews
תצוגה מקדימה של ההגדרות.
הגדרת הפקודות ש-IDX יבצע בסביבת הפיתוח.
דוגמה:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Type: (סוג): קבוצת מאפיינים של (מודול משנה)
ברירת מחדל: { }
idx.previews.previews.<name>.activity
Android Launch Activity
סוג: מחרוזת
ברירת מחדל: ""
idx.previews.previews.<name>.command
הפקודה לביצוע
סוג: רשימה של מחרוזות
ברירת מחדל: [ ]
idx.previews.previews.<name>.cwd
ספריית עבודה
סוג: מחרוזת
ברירת מחדל: ""
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
פקודות לביצוע בכל פעם שסביבת העבודה נפתחת.
האפשרות הזו יכולה להיות שימושית כדי להפעיל את כלי המעקב אחר בנייה. לדוגמה, כאן אנחנו מציינים 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.
סוג: בוליאני
ברירת מחדל: false
דוגמה: true
services.mongodb.enable
האם להפעיל את שרת MongoDB.
סוג: בוליאני
ברירת מחדל: false
דוגמה: true
services.mongodb.package
חבילת MongoDB לשימוש.
סוג: חבילה
ברירת מחדל: <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
.
סוג: בוליאני
ברירת מחדל: false
דוגמה: true
services.mysql.package
חבילת MySQL שבה רוצים להשתמש.
סוג: חבילה
ברירת מחדל: pkgs.mysql
דוגמה: pkgs.mysql80
services.postgres.enable
האם להפעיל את שרת PostgreSQL.
סוג: בוליאני
ברירת מחדל: false
דוגמה: true
services.postgres.enableTcp
האם להפעיל את Postgres להאזנה ב-TCP.
סוג: בוליאני
ברירת מחדל: true
דוגמה: true
services.postgres.package
חבילת PostgreSQL לשימוש.
סוג: חבילה
ברירת מחדל: 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 .
סוג: בוליאני
ברירת מחדל: 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.
סוג: בוליאני
ברירת מחדל: 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