Firebase Studio يوفّر مجموعة كبيرة من النماذج المضمّنة التي تتضمّن جميع الملفات، وحِزم النظام (مثل أدوات الترجمة البرمجية)، و الإضافات التي تحتاج إليها للبدء بسرعة بلغة أو إطار عمل.
يمكنك أيضًا تشغيل مساحة عمل Firebase Studio باستخدام نماذج المنتدى المستضافة على GitHub. لمزيد من المعلومات حول تشغيل مساحة عمل جديدة من نموذج، يُرجى الاطّلاع على مقالة إنشاء مساحة عمل Firebase Studio.
سيستخدم معظم المستخدمين النماذج المضمّنة أو يستوردون المشاريع من Git، ولكن في حالات الاستخدام الأكثر تقدّمًا، يمكنك إنشاء نماذجك الخاصة:
إذا كنت تنشئ إطار عمل أو مكتبة أو خدمة، يمكنك أن تسمح للمستخدمين بالبدء بسرعة باستخدام التكنولوجيا بدون مغادرة المتصفّح، مع الاستفادة من الإمكانات الكاملة لجهاز افتراضي مستند إلى السحابة الإلكترونية.
إذا كان لديك مجموعة تكنولوجيات مفضّلة لمشاريعك، يمكنك تبسيط عملية بدء مشاريع جديدة باستخدام نموذج مخصّص.
إذا كنت تعلّم الآخرين، مثلاً من خلال دليل توجيهي/تعليمي أو درس تطبيقي حول الترميز، يمكنك إزالة بعض الخطوات الأولية لطلابك من خلال الضبط المسبق لنقطة البداية في الدرس التطبيقي حول الترميز كنموذج مخصص.
بعد إنشاء النموذج المخصّص واختباره، يمكنك إنشاء رابط له
ووضعه على موقعك الإلكتروني أو ملف README في مستودع Git
أو صفحة تفاصيل الحزمة (مثلاً في NPM) أو
أي مكان آخر تتوقّع أن يبدأ المستخدمون فيه باستخدام التكنولوجيا.
المتطلبات الأساسية
قبل البدء:
تعرَّف على كيفية استخدام ملف
idx/dev.nixلـ تخصيص بيئتك.تعرَّف على أساسيات لغة Nix واحتفِظ بالمرجع في متناول يدك.
بنية ملف النموذج
نموذج Firebase Studio هو مستودع Git علني (أو مجلد أو فرع في مستودع) يحتوي على ملفَين على الأقل:
يتضمّن ملف
idx-template.jsonالبيانات الوصفية للنموذج، بما في ذلك اسمه ووصفه والمعلَمات التي يمكن للمستخدمين ضبطها في النموذج. على سبيل المثال، يمكنك السماح للمستخدمين بالاختيار من بين عدد من لغات البرمجة أو أمثلة حالات الاستخدام. Firebase Studio يستخدم هذه المعلومات لإعداد واجهة المستخدم التي تظهر للمستخدمين عندما يختارون إنشاء مساحة عمل جديدة من النموذج.idx-template.nixهو ملف مكتوب بلغة Nix يحتوي على نص برمجي لـ Bash shell (مغلّف في دالة Nix) ينفّذ ما يلي:إنشاء دليل العمل لمساحة العمل الجديدة
إعداد بيئته من خلال إنشاء ملف
.idx/dev.nixيُرجى العِلم أنّه يمكنك أيضًا تشغيل أداة إنشاء هيكل المشروع، مثلflutter createأوnpm initفي هذا النص البرمجي، أو تشغيل نص برمجي مخصّص مكتوب بلغة Go أو Python أو Node.js أو لغة أخرى.سيتم تنفيذ هذا الملف باستخدام المعلَمات التي يحدّدها المستخدم عندما يحمّل Firebase Studio النموذج.
يمكن تضمين ملفات أخرى بجانب هذَين الملفَين لاستخدامها في idx-template.nix من أجل إنشاء النموذج. على سبيل المثال، يمكنك تضمين ملف .idx/dev.nix النهائي، أو حتى تضمين جميع ملفات إنشاء الهيكل مباشرةً في المستودع.
إنشاء نموذج أساسي
لتسريع عملية إنشاء النماذج، ننصحك بالبدء بإحدى الطريقتَين التاليتَين لإنشاء نموذج Firebase Studio يمكنك تخصيصه بشكل أكبر:
مثال أساسي: تحويل أي مستودع GitHub علني إلى نموذج
قبل الخوض في تفاصيل كيفية تحديد idx-template.json وidx-template.nix، من المفيد الاطّلاع على نموذج أساسي ينفّذ ما يلي:
- لا يحتوي على أي معلَمات يمكن للمستخدم ضبطها
- ينسخ جميع الملفات في مستودع النموذج (باستثناء ملفَي
idx-template) إلى مساحة عمل المستخدم يجب أن يكون هناك مجلد فرعي.idxيحتوي على ملفdev.nixيحدّد البيئة.
إذا أضفت الملفَين التاليَين إلى أي مستودع GitHub علني (أو مجلد فرعي أو فرع)، سيؤدي ذلك فعليًا إلى تحويل هذا المستودع إلى Firebase Studio نموذج.
idx-template.json
{
"name": "Hello world",
"description": "A template for a CLI program that prints 'hello world'",
"icon": "https://www.gstatic.com/images/branding/productlogos/studio/v1/192px.svg",
"params": []
}
idx-template.nix
# No user-configurable parameters
{ pkgs, ... }: {
# Shell script that produces the final environment
bootstrap = ''
# Copy the folder containing the `idx-template` files to the final
# project folder for the new workspace. ${./.} inserts the directory
# of the checked-out Git folder containing this template.
cp -rf ${./.} "$out"
# Set some permissions
chmod -R +w "$out"
# Remove the template files themselves and any connection to the template's
# Git repository
rm -rf "$out/.git" "$out/idx-template".{nix,json}
'';
}
انتقِل إلى تخصيص نموذجك للتعرّف على التغييرات الإضافية التي يمكنك إجراؤها لتخصيص نموذجك.
إنشاء نموذج مخصّص باستخدام نموذج رسمي أو نموذج متوفّر في المنتدى
يحتفظ فريق Firebase Studio بمستودعَين لنماذج Firebase Studio:
النماذج الرسمية: هي النماذج التي تختارها مباشرةً من Firebase Studio لوحة البيانات عند إنشاء تطبيق جديد.
نماذج المنتدى: تسمح هذه النماذج بالمساهمات من المنتدى المفتوح المصدر. لاستخدام نموذج متوفّر في المنتدى، استنسِخ مستودع Git لنماذج المنتدى. يمكنك استخدام الرابط الكامل للنموذج الذي تريد استخدامه.
لإنشاء نموذج مخصّص باستخدام نموذج حالي كأساس:
حدِّد النموذج الذي تريد استخدامه كأساس لنموذجك المخصّص، ثم استنسِخ المشروع.
خصِّص
idx-template.jsonوidx-template.nixو.idx/dev.nixحسب الحاجة، بدءًا من تخصيص نموذجك.احفظ التغييرات في المستودع.
اتّبِع الخطوات الواردة في مقالة إنشاء مساحة عمل جديدة لنموذجك لـ نشر نموذجك واختباره. إذا كنت تستخدم مستودعًا متداخلاً، يمكنك الربط به مباشرةً في عنوان URL. على سبيل المثال، إذا كنت تستخدم نموذج "Vanilla Vite" من المنتدى، عليك توفير مساحة عمل جديدة واختبارها باستخدام عنوان URL التالي:
https://studio.firebase.google.com/new?template=https://github.com/firebase-studio/community-templates/tree/main/vite-vanilla
انتقِل إلى تخصيص نموذجك للتعرّف على التغييرات الإضافية التي يمكنك إجراؤها لتخصيص نموذجك.
تخصيص نموذجك
بعد إنشاء نموذج أساسي يمكنك البناء عليه، يمكنك تعديل ملفات idx-template.json وidx-template.nix و.idx/dev.nix لتتطابق مع متطلباتك. قد تحتاج إلى تخصيص إعدادات إضافية:
- أضِف حِزم النظام إلى النص البرمجي
bootstrap. - إضافة معلَمات يمكن للمستخدم ضبطها
- اختيار الملفات التي يجب فتحها تلقائيًا
- اختيار رمز تلقائي لمساحة العمل
استخدام حِزم نظام إضافية في النص البرمجي bootstrap
لا يستخدم المثال الأساسي سوى أوامر POSIX الأساسية لنسخ
الملفات إلى المكان الصحيح. قد يتطلّب النص البرمجي bootstrap في نموذجك تثبيت ملفات ثنائية إضافية، مثل git أو node أو python3 أو غيرها.
يمكنك إتاحة حِزم نظام إضافية للنص البرمجي bootstrap
من خلال تحديد packages في ملف idx-template.nix، تمامًا كما يمكنك
تخصيص مساحة عمل باستخدام حِزم نظام إضافية
من الحِزم عن طريق إضافة
packages إلى ملف dev.nix الخاص بها.
في ما يلي مثال على إضافة pkgs.nodejs، التي تتضمّن ملفات ثنائية مثل node و
npx وnpm:
# idx-template.nix
{pkgs}: {
packages = [
# Enable "node", "npm" and "npx" in the bootstrap script below.
# Note, this is NOT the list of packages available to the workspace once
# it's created. Those go in .idx/dev.nix
pkgs.nodejs
];
bootstrap = ''
mkdir "$out"
# We can now use "npm"
npm init --yes my-boot-strap@latest "$out"
''
}
إضافة معلَمات يمكن للمستخدم ضبطها
للسماح للمستخدمين بتخصيص نقطة البداية لمشروعهم الجديد، يمكنك إما إنشاء نماذج متعددة أو إنشاء نموذج واحد يحتوي على معلَمات.
هذا خيار رائع إذا كانت نقاط البداية المختلفة مجرد قيم مختلفة يتم تمريرها إلى أداة سطر الأوامر (على سبيل المثال، --language=js مقابل --language=ts).
لإضافة معلَمات، عليك تنفيذ ما يلي:
- وصف المَعلمة في العنصر
paramsفي ملف البيانات الوصفيةidx-template.jsonFirebase Studio يستخدم المعلومات الواردة في هذا الملف لإعداد واجهة المستخدم (مثل مربّعات الاختيار والقوائم المنسدلة وحقول النص) التي تظهر لمستخدمي النموذج. - تعديل النص البرمجي bootstrap في
idx-template.nixلاستخدام القيم التي اختارها المستخدم أثناء إنشاء النموذج
وصف المَعلمة في idx-template.json
في ما يلي مثال على إضافة مَعلمة enum، التي Firebase Studio
يعرضها إما كقائمة منسدلة أو مجموعة أزرار اختيار، حسب
عدد الخيارات:
{
"name": "Hello world",
"description": "A hello world app",
"params": [
{
"id": "language",
"name": "Programming Language",
"type": "enum",
"default": "ts",
"options": {
"js": "JavaScript",
"ts": "TypeScript"
},
"required": true
}
]
}
بما أنّ هناك قيمتَين (JavaScript وTypeScript)، ستعرض واجهة المستخدم مجموعة أزرار اختيار للخيارَين وتمرِّر إما القيمة ts أو js إلى النص البرمجي idx-template.nix.
يحتوي كل عنصر مَعلمة على الخصائص التالية:
| الخاصية | النوع | الوصف |
|---|---|---|
| id | string |
رقم التعريف الفريد للمَعلمة، على غرار اسم المتغيّر |
| name | string |
الاسم المعروض لهذه المَعلمة |
| type | string |
يحدّد مكوِّن واجهة المستخدم الذي سيتم استخدامه لهذه المَعلمة ونوع البيانات التي سيتم تمريرها إلى النص البرمجي bootstrap القيم الصالحة هي:
|
| options | object |
بالنسبة إلى معلَمات enum، يمثّل هذا الخيارات التي يتم عرضها للمستخدمين. على سبيل المثال، إذا كانت الخيارات هي {"js": "JavaScript", ...}، سيتم عرض "JavaScript" كخيار، وعند اختياره، ستكون قيمة هذه المَعلمة js. |
| default | string أو boolean |
يضبط القيمة الأولية في واجهة المستخدم. بالنسبة إلى معلَمات enum، يجب أن تكون هذه القيمة إحدى المفاتيح في options. بالنسبة إلى معلَمات boolean، يجب أن تكون هذه القيمة true أو false. |
| required | boolean |
يشير إلى أنّ هذه المَعلمة مطلوبة |
استخدام قيم المَعلمات في idx-template.nix
بعد تحديد العنصر params في ملف idx-template.json، يمكنك البدء بتخصيص النص البرمجي bootstrap استنادًا إلى قيم المَعلمات التي يختارها المستخدم.
باتّباع المثال في القسم السابق، إذا كان لديك مَعلمة واحدة برقم التعريف language وهي `enum` تحتوي على القيمتَين المحتملتَين ts أو js، يمكنك استخدامها على النحو التالي:
# idx-template.nix
# Accept additional arguments to this template corresponding to template
# parameter IDs, including default values (language=ts by default in this example).
{ pkgs, language ? "ts", ... }: {
packages = [
pkgs.nodejs
];
bootstrap = ''
# We use Nix string interpolation to pass the user's chosen programming
# language to our script.
npm init --yes my-boot-strap@latest "$out" -- --lang=${language}
''
}
هناك نمط شائع آخر وهو تضمين المحتوى بشكل مشروط استنادًا إلى قيمة سلسلة. في ما يلي طريقة أخرى لكتابة المثال السابق:
npm init --yes my-boot-strap@latest "$out" -- \
${if language == "ts" then "--lang=ts" else "--lang=js" }
اختيار الملفات التي يجب فتحها تلقائيًا
من المستحسن تخصيص الملفات التي يجب فتحها للتعديل عند إنشاء مساحات عمل جديدة باستخدام النموذج. على سبيل المثال، إذا كان النموذج مخصّصًا لموقع إلكتروني أساسي، قد تريد فتح ملفات HTML وJavaScript وCSS الرئيسية.
لتخصيص الملفات التي يجب فتحها تلقائيًا، عدِّل ملف .idx/dev.nix (وليس ملف idx-template.nix!) لتضمين خطاف مساحة عمل onCreate يحتوي على السمة openFiles، على النحو التالي:
# .idx/dev.nix
{pkgs}: {
...
idx = {
# Workspace lifecycle hooks
workspace = {
# Runs when a workspace is first created with this `dev.nix` file
onCreate = {
# Open editors for the following files by default, if they exist.
# The last file in the list will be focused.
default.openFiles = [
"src/index.css"
"src/index.js"
"src/index.html"
];
# Include other scripts here, as needed, for example:
# installDependencies = "npm install";
};
# To run something each time the workspace is (re)started, use the `onStart` hook
};
# Enable previews and customize configuration
previews = { ... };
};
}
اختيار رمز تلقائي لمساحة العمل
يمكنك اختيار الرمز التلقائي لمساحات العمل التي تم إنشاؤها باستخدام النموذج، وذلك عن طريق وضع ملف PNG باسم icon.png بجانب ملف dev.nix داخل الدليل .idx.
اختبار النموذج في مساحة عمل جديدة
أسهل طريقة لاختبار النموذج من البداية إلى النهاية هي إنشاء مساحة عمل جديدة باستخدام النموذج. انتقِل إلى الرابط التالي، مع استبدال المثال بعنوان URL لمستودع GitHub الخاص بالنموذج:
https://idx.google.com/new?template=https://github.com/my-org/my-repo
يمكنك اختياريًا تضمين فرع ومجلد فرعي. جميع ما يلي صالح، طالما أنّه يمكن الوصول إليه علنًا:
https://github.com/my-org/my-repo/https://github.com/my-org/my-repo/tree/main/path/to/myidxtemplatehttps://github.com/my-org/my-repo/tree/branchhttps://github.com/my-org/my-repo/tree/branch/path/to/myidxtemplate
هذا هو أيضًا عنوان URL الذي ستشاركه مع الآخرين ليتمكّنوا من استخدام النموذج الجديد ، أو عنوان URL الذي ستربطه من زر "الفتح في Firebase Studio" button.
مشاركة النموذج
بعد التأكّد من أنّ النموذج يعمل على النحو المتوقّع، انشره في مستودع GitHub وشارِك الرابط نفسه الذي استخدمته عند إنشاء مساحة عمل للاختبار.
ولتسهيل عثور المستخدمين على النموذج، أضِف زر "الفتح في Firebase Studio" إلى موقعك الإلكتروني أو ملف README في المستودع.