القوالب
في المشاريع ذات البنية الراسخة، قد يرغب المطورون في تمهيد مكونات أو ميزات جديدة تتسق مع المشروع. مع سقالة تويست يمكنك إنشاء ملفات من قالب. يمكنك تحديد القوالب الخاصة بك أو استخدام القوالب التي يتم بيعها مع Tuist. هذه بعض السيناريوهات التي قد تكون فيها السقالات مفيدة:
- قم بإنشاء ميزة جديدة تتبع بنية معينة:
tuist سقالة الأفعى - الاسم MyFeature. - إنشاء مشاريع جديدة:
تويست سقالة ميزة المشروع - اسم المشروع الرئيسي
غير متاحة على الإنترنت
تويست ليس له رأي في محتوى القوالب الخاصة بك، وما تستخدمها من أجله. فهي مطلوبة فقط لتكون في دليل محدد.
تعريف قالب
ولتعريف القوالب، يمكنك تشغيل
`tuist تحرير` ثم إنشاء دليل يسمىname_of_of_template ضمنTuist/Templates الذي يمثل القالب الخاص بك. تحتاج القوالب إلى ملف بيان، name_of_of_template.swift. الذي يصف القالب. لذلك إذا كنت تقوم بإنشاء قالب يسمى إطار العمل ، يجب عليك إنشاء دليل جديد إطار العمل في Tuist/Templates مع ملف بيان يسمى framework.swift والذي يمكن أن يبدو هكذا:
swift
import ProjectDescription
let nameAttribute: Template.Attribute = .required("name")
let template = Template(
description: "Custom template",
attributes: [
nameAttribute,
.optional("platform", default: "ios"),
],
items: [
.string(
path: "Project.swift",
contents: "My template contents of name \(nameAttribute)"
),
.file(
path: "generated/Up.swift",
templatePath: "generate.stencil"
),
.directory(
path: "destinationFolder",
sourcePath: "sourceFolder"
),
]
)استخدام قالب
بعد تحديد القالب، يمكننا استخدامه من الأمر سقالة:
bash
tuist scaffold name_of_template --name Name --platform macosINFO
نظرًا لأن النظام الأساسي هو وسيطة اختيارية، يمكننا أيضًا استدعاء الأمر بدون الوسيطة -- النظام الأساسي macos.
إذا لم يوفر لك .string و .files مرونة كافية، يمكنك الاستفادة من لغة النمذجة [Stencil] (https://stencil.fuller.li/en/latest/) عبر حالة .file. بالإضافة إلى ذلك، يمكنك أيضًا استخدام مرشحات إضافية محددة هنا.
باستخدام استيفاء السلسلة، \(nameAttribute) أعلاه سيحل إلى }. إذا كنت ترغب في استخدام مرشحات الاستنسل في تعريف القالب، يمكنك استخدام هذا الاستيفاء يدويًا وإضافة أي مرشحات تريدها. على سبيل المثال، يمكنك استخدام { { الاسم | اسم | أحرف صغيرة } } بدلًا من \(nameAttribute) للحصول على القيمة ذات الأحرف الصغيرة لسمة الاسم.
يمكنك أيضًا استخدام .directory الذي يتيح إمكانية نسخ مجلدات كاملة إلى مسار معين.
