أردت معرفة كيفية عمل shadcn-ui CLI. في هذه المقالة، أناقش الكود المستخدم لبناء shadcn-ui/ui CLI.
في الجزء 2.11، نظرنا إلى وظيفة runInit وكيف يضمن shadcn-ui/ui وجود الدلائل المتوفرة في ResolvePaths في التكوين.
يتم تنفيذ العمليات التالية في وظيفة runInit:
1، 2، 3، 4 مما سبق تم تناوله في الجزء 2.12، 2.13 و 2.14، دعونا نعرف كيف تتم عملية “تثبيت التبعيات”.
تم اختيار مقتطف الكود أدناه من cli/src/commands/init.ts
// Install dependencies. const dependenciesSpinner = ora(\`Installing dependencies...\`)?.start() const packageManager = await getPackageManager(cwd) // TODO: add support for other icon libraries. const deps = \[ ...PROJECT\_DEPENDENCIES, config.style === "new-york" ? "@radix-ui/react-icons" : "lucide-react", \] await execa( packageManager, \[packageManager === "npm" ? "install" : "add", ...deps\], { cwd, } ) dependenciesSpinner?.succeed()
ora عبارة عن أداة دوارة طرفية أنيقة وتُستخدم لإظهار الرسالة "جارٍ تثبيت التبعيات..." عند تشغيل الأمر npx shadcn init.
getPackageManager عبارة عن حزم مستوردة/cli/src/utils/get-package-manager.ts
import { detect } from "@antfu/ni" export async function getPackageManager( targetDir: string ): Promise { const packageManager = await detect({ programmatic: true, cwd: targetDir }) if (packageManager === "yarn@berry") return "yarn" if (packageManager === "pnpm@6") return "pnpm" if (packageManager === "bun") return "bun" return packageManager ?? "npm" }
هل سبق لك استخدام npm في مشروع pnpm؟ لقد فشلت في كثير من الأحيان في تثبيت الحزمة لأنك تستخدم npm في مشروع pnpm.
@antfu/ni يتيح لك استخدام مدير الحزم المناسب، والكشف هو وظيفة توفر packageManager المستخدم في مشروع معين بناءً على cwd.
لا يمكنني العثور على أي شيء مذكور حول طريقة الكشف في الملف التمهيدي @antfu/ni Github. كيف يمكنك معرفة وجود مثل هذه الطريقة إلا إذا قرأتها في قاعدة بيانات مفتوحة المصدر؟
يقوم Execa بتشغيل الأوامر في البرنامج النصي أو التطبيق أو المكتبة الخاصة بك. على عكس الأصداف، تم تحسينه للاستخدام البرمجي. بنيت على رأس الوحدة الأساسية Child_process. تم بناء هذا من قبل الأسطورة، سيندر سورهوس
shadcn-ui/ui CLI يستخدم execa لتثبيت التبعيات الضرورية كجزء من أمر npx shadcn-ui init.
shadcn-ui CLI يستخدم execa، الذي أنشأه الأسطورة Sindre Sorhu. يتم استخدام Execa لتثبيت التبعيات الضرورية في ملف نصي. نحن جميعًا على دراية بتنفيذ أوامر التثبيت، ولكن إذا كنت تريد تثبيت بعض الحزم في برنامج نصي برمجيًا، فيمكن استخدام execa.
shadcn-ui CLI يكتشف مدير الحزم المستخدم في مشروعك باستخدام طريقة "الكشف" من @antfu/ni.
يمثل هذا المقال سعيي للدراسة ومعرفة ما يحدث تحت الغطاء عند تشغيل الأمر npx shadcn-ui init على أنه مكتمل.
سأنتقل الآن لدراسة أمر الإضافة.
هل تريد معرفة كيفية إنشاء shadcn-ui/ui من الصفر؟ راجع البناء من الصفر
الموقع الإلكتروني: https://ramunarasinga.com/
لينكد إن: https://www.linkedin.com/in/ramu-narasinga-189361128/
جيثب: https://github.com/Ramu-Narasinga
البريد الإلكتروني: [email protected]
إنشاء shadcn-ui/ui من الصفر
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3