الهدف من مشروع IDX هو أن يكون مفيدًا للمطوّرين قدر الإمكان. إحدى الطرق التي ينجز بها IDX
Nix + IDX
يستخدم IDX Nix لتحديد إعدادات البيئة لكل مساحة عمل. Nix هو مدير حزم وظيفي تمامًا ويعيّن معرّفات فريدة لكل تبعية، ما يعني في النهاية أنّ بيئتك يمكن أن تحتوي على إصدارات متعددة من نفس التبعية بسلاسة. كما أنها قابلة للتكرار والتوضيح. في سياق IDX، يعني ذلك أنه يمكنك مشاركة ملف إعداد Nix عبر مساحات العمل لتحميل إعداد البيئة نفسه.
يحدّد IDX بيئة المعاينة وإعدادات حزمة Workspace
مباشرةً من مستودع الرموز باستخدام ملف .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 أو غير ثابتة.
النوع: قائمة بالحِزم
الخيار التلقائي: [ ]
العضويات
nixpkgs لاستخدامها.
تُحدِّد هذه القناة محتوى الوسيطة pkgs
.
النوع: واحد من "stable-23.05" أو "stable-23.11" أو "غير ثابت"
الخيار التلقائي: "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
يحدِّد ذلك ما إذا كان سيتم تفعيل Dock بدون Rootless.
النوع: قيمة منطقية
الخيار التلقائي: 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
بعد تثبيت الإضافات
Type:<br class="mq_mod_embeding,"g,pay_mod_تضمين,",g2l",gall
الخيار التلقائي: [ ]
مثال: [ "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
رقم تعريف المشروع المطلوب استخدامه لتشغيل محاكي النشر/الاشتراك هذا المشروع للاختبار فقط، وليس من الضروري أن يكون موجودًا ويتم استخدامه محليًا فقط.
النوع: سلسلة تطابق النمط [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