این صفحه شامل جزئیاتی در مورد طرحواره فایل پیکربندی محیط فضای کاری شما است که همیشه باید در .idx/dev.nix قرار داشته باشد.
برای آشنایی با زبان Nix، به آموزش رسمی زبان Nix مراجعه کنید.
بستهها
بستههایی برای نصب در محیط.
شما میتوانید از آرگومان pkgs برای انتخاب بستهها جهت نصب، مثلاً pkgs.python3 ، استفاده کنید. توجه داشته باشید که محتوای pkgs به گزینه channel انتخاب شده بستگی دارد.
مثال:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
میتوانید بستههای موجود را اینجا جستجو کنید: stable-23.11 یا instability .
نوع: فهرست بسته
پیشفرض: [ ]
کانال
کانال nixpkgs برای استفاده.
این کانال محتویات آرگومان pkgs را تعریف میکند.
نوع: یکی از «stable-23.05»، «stable-23.11»، «stable-24.05»، «stable-24.11»، «unstable»
پیشفرض: "stable-23.11"
پاکت
متغیرهای محیطی که در محیط توسعهدهنده تنظیم میشوند.
اینها به تمام پوستههای شما و سرور پیشنمایش منتشر میشوند. متغیرهای محیطی میتوانند به ویژه در صورتی مفید باشند که برنامه شما به مجموعهای خاص از متغیرها نیاز داشته باشد.
مقدار هر متغیر میتواند یک رشته یا لیستی از رشتهها باشد. مورد دوم به صورت زنجیرهای و با استفاده از کاراکترهای دونقطه (:) در میان آنها قرار میگیرد.
PATH باید یک لیست باشد، زیرا همیشه گسترش مییابد و هرگز به طور کامل جایگزین نمیشود.
مثال:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
نوع: مجموعه ویژگی از ((لیستی از رشته) یا هر چیز دیگری)
پیشفرض: { }
افزونههای idx
افزونههای کدی که میخواهید در فضای کاری IDX خود نصب کنید.
این لیستی از شناسههای افزونههای کاملاً واجد شرایط است، برای مثال ${publisherId}.${extensionId} .
میتوانید فهرستی از افزونههای موجود را در Open VSX Registry پیدا کنید و آنها را با استفاده از ${publisherId}.${extensionId} در فایل dev.nix خود وارد کنید.
نوع: لیستی از (رشته یا مسیر غیر خالی)
پیشفرض: [ ]
پیشنمایشهای idx.enable
برای فعال کردن پیشنمایشهای IDX، این گزینه را روی true تنظیم کنید.
این ویژگی راهی برای اجرا و بارگذاری مجدد خودکار برنامههای شما هنگام توسعه آنها فراهم میکند.
نوع: بولی
پیشفرض: true
مثال: true
پیشنمایشهای idx
پیشنمایش پیکربندیها
دستوراتی را که IDX در محیط توسعهدهنده شما اجرا میکند، تعریف کنید.
مثال:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
نوع: مجموعه ویژگی (زیرماژول)
پیشفرض: { }
پیشنمایشها. پیشنمایشها.<name>فعالیت idx
فعالیت راهاندازی اندروید
نوع: رشته
پیشفرض: ""
دستور idx.previews.previews<name>
دستور برای اجرا
نوع: لیست رشتهها
پیشفرض: [ ]
پیشنمایشها. پیشنمایشها.<name>.cwd
دایرکتوری کاری
نوع: رشته
پیشفرض: ""
idx.previews.previews.<name>.env
متغیرهای محیطی برای تنظیم.
نوع: مجموعه ویژگی از رشته
پیشفرض: { }
idx.previews.previews.<name>.manager
مدیر
نوع: یکی از «وب»، «فلاتر»، «اندروید»، «گرادل»
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
دستوراتی که هر زمان فضای کاری باز شود، اجرا میشوند.
این میتواند برای شروع نظارت بر ساخت مفید باشد. برای مثال، در اینجا ما دو دستور را برای اجرا مشخص میکنیم:
{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
نوع: فهرست مسیر
پیشفرض: [ ]
خدمات
سرویسهای رایجی که هنگام باز شدن فضای کاری فعال میشوند.
برای مثال، برای فعال کردن Postgres و استفاده از افزونه pgvector ، کد زیر را به dev.nix اضافه کنید:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
بخشهای زیر فهرستی از تمام سرویسهای پشتیبانیشده و گزینههای قابل تنظیم آنها را ارائه میدهند.
فعال کردن سرویسها
آیا داکر بدون ریشه فعال شود یا خیر.
نوع: بولی
پیشفرض: false
مثال: true
فعال کردن سرویسها
آیا سرور MongoDB فعال شود یا خیر.
نوع: بولی
پیشفرض: false
مثال: true
بستهی سرویسها در مونگودیبی
بسته MongoDB برای استفاده.
نوع: بسته
پیشفرض: <derivation mongodb-6.0.11>
خدمات.mongodb.port
پورتی را که Mongod به آن گوش خواهد داد، پیکربندی میکند.
به طور پیشفرض tcp غیرفعال است و Mongod فقط به /tmp/mongodb/mongodb.sock گوش میدهد.
برای اتصال، از رشتهی اتصال mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock استفاده کنید.
نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)
پیشفرض: 0
فعال کردن سرویسها
آیا سرور MySQL فعال شود یا خیر.
سرور با یک کاربر root بدون رمز عبور راهاندازی شده است. بنابراین برای ایجاد کاربران اضافی و ایجاد پایگاههای داده از mysql -u root استفاده کنید.
نوع: بولی
پیشفرض: false
مثال: true
بستهی سرویسها (services.mysql)
بسته MySQL برای استفاده.
نوع: بسته
پیشفرض: pkgs.mysql
مثال: pkgs.mysql80
فعال کردن سرویسها
آیا سرور PostgreSQL فعال شود یا خیر.
نوع: بولی
پیشفرض: false
مثال: true
services.postgres.enableTcp
آیا Postgres را برای گوش دادن به TCP فعال کنیم یا خیر.
نوع: بولی
پیشفرض: true
مثال: true
بستهی سرویسها
بسته PostgreSQL برای استفاده.
نوع: بسته
پیشفرض: pkgs.postgresql
مثال: pkgs.postgresql_15
سرویسهای 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 به آن گوش خواهد داد، پیکربندی میکند.
نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)
پیشفرض: 8085
services.pubsub.project-id
شناسه پروژه برای اجرای شبیهساز Pub/Sub. این پروژه فقط برای آزمایش است، لازم نیست وجود داشته باشد و فقط به صورت محلی استفاده میشود.
نوع: رشته مطابق با الگوی [az][a-z0-9-]{5,29}
پیشفرض: "idx-pubsub-emulator"
فعال کردن سرویسها
آیا سرور Redis فعال شود یا خیر.
نوع: بولی
پیشفرض: false
مثال: true
خدمات.redis.port
پورتی را که Redis به آن گوش خواهد داد، پیکربندی میکند.
به طور پیشفرض tcp غیرفعال است و redis فقط به /tmp/redis/redis.sock گوش میدهد.
نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)
پیشفرض: 0
فعال کردن سرویسها
آیا شبیهساز Google Cloud Spanner فعال شود یا خیر.
نوع: بولی
پیشفرض: false
مثال: true
تزریق خطا در سرویسها
آیا تزریق خطای تصادفی در تراکنشها فعال شود یا خیر.
نوع: بولی
پیشفرض: false
مثال: true
services.spanner.grpc-port
پورت TCP که شبیهساز باید به آن متصل شود.
نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)
پیشفرض: 9010
services.spanner.rest-port
پورتی که درخواستهای REST در آن ارائه میشوند
نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)
پیشفرض: 9020