الهدف من مشروع 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.*.command
الأمر المطلوب تنفيذه
النوع: قائمة من السلسلة
الخيار التلقائي:
[ ]
idx.previews.previews.*.cwd
دليل العمل
Type: string
الخيار التلقائي:
""
idx.previews.previews.*.env
متغيرات البيئة المطلوب ضبطها.
Type: مجموعة السمات من السلسلة
الخيار التلقائي:
{ }
idx.previews.previews.*.manager
مدير
النوع:
واحد من web
، flutter
idx.workspace.onCreate
هي الأوامر التي يتم تنفيذها عند إنشاء مساحة العمل وفتحها للمرة الأولى.
يمكن أن يكون ذلك مفيدًا لإعداد بيئة التطوير. على سبيل المثال، نحدد في ما يلي
npm install
لتشغيله:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
};
}
النوع: مجموعة سمات (مسار أو سلسلة)
الخيار التلقائي:
{ }
idx.workspace.onStart
الأوامر التي يتم تنفيذها كلما تم فتح مساحة العمل.
قد تكون هذه الطريقة مفيدة في جذب مشاهدين جدد. على سبيل المثال، نحدد هنا أمرين لتشغيلهما:
{pkgs, ...}: {
idx.workspace.onStart = {
npm-watch-fe = "npm run watch:frontend";
npm-watch-be = "npm run watch:backend";
};
}
النوع: مجموعة سمات (مسار أو سلسلة)
الخيار التلقائي:
{ }
services.docker.enable
يحدِّد ذلك ما إذا كان سيتم تفعيل Dock بدون Rootless.
النوع: منطقي
الخيار التلقائي:
false
مثال:
true