تُستخدم العلامة --filter (أو -F) لتحديد الحزم حسب النمط في monorepo. يمكن استخدام الأنماط لمطابقة أسماء الحزم أو مسارات الحزم، مع دعم كامل لنمط glob.
حاليًا تدعم --filter بواسطة bun install و bun outdated، ويمكن استخدامها أيضًا لتشغيل نصوص برمجية لحزم متعددة في وقت واحد.
المطابقة
اسم الحزمة --filter <pattern>
تحدد أنماط الاسم الحزم بناءً على اسم الحزمة، كما هو محدد في package.json. على سبيل المثال، إذا كان لديك حزم pkg-a و pkg-b و other، يمكنك مطابقة جميع الحزم باستخدام *، فقط pkg-a و pkg-b باستخدام pkg*، وحزمة محددة عن طريق تقديم الاسم الكامل للحزمة.
مسار الحزمة --filter ./<glob>
يتم تحديد أنماط المسار ببدء النمط بـ ./، وستحدد جميع الحزم في الأدلة التي تطابق النمط. على سبيل المثال، لمطابقة جميع الحزم في الأدلة الفرعية لـ packages، يمكنك استخدام --filter './packages/**'. لمطابقة حزمة موجودة في packages/foo، استخدم --filter ./packages/foo.
bun install و bun outdated
يدعم كل من bun install و bun outdated العلامة --filter.
bun install بشكل افتراضي سيقوم بتثبيت التبعيات لجميع الحزم في monorepo. لتثبيت التبعيات لحزم محددة، استخدم --filter.
بالنظر إلى monorepo مع مساحات عمل pkg-a و pkg-b و pkg-c تحت ./packages:
# تثبيت التبعيات لجميع مساحات العمل باستثناء `pkg-c`
bun install --filter '!pkg-c'
# تثبيت التبعيات للحزم في `./packages` (`pkg-a` و `pkg-b` و `pkg-c`)
bun install --filter './packages/*'
# نفس ما سبق، لكن استبعد package.json الجذر
bun install --filter '!./' --filter './packages/*'وبالمثل، سيعرض bun outdated التبعيات القديمة لجميع الحزم في monorepo، ويمكن استخدام --filter لتقييد الأمر لمجموعة فرعية من الحزم:
# عرض التبعيات القديمة لمساحات العمل التي تبدأ بـ `pkg-`
bun outdated --filter 'pkg-*'
# عرض التبعيات القديمة لـ package.json الجذر فقط
bun outdated --filter './'لمزيد من المعلومات حول هذين الأمرين، راجع bun install و bun outdated.
تشغيل النصوص البرمجية باستخدام --filter
استخدم العلامة --filter لتنفيذ نصوص برمجية في حزم متعددة في وقت واحد:
bun --filter <pattern> <script>لنفترض أن لديك monorepo مع حزمتين: packages/api و packages/frontend، كلاهما يحتوي على نص برمجي dev سيبدأ خادم تطوير محلي. عادةً، سيتعين عليك فتح علامتي تبويب طرفيتين منفصلتين، والانتقال إلى كل دليل حزمة، وتشغيل bun dev:
cd packages/api
bun dev
# في طرفية أخرى
cd packages/frontend
bun devباستخدام --filter، يمكنك تشغيل النص البرمجي dev في كلتا الحزمتين في وقت واحد:
bun --filter '*' devسيتم تشغيل كلا الأمرين بالتوازي، وسترى واجهة طرفية جميلة تعرض مخرجات كل منهما:
تشغيل النصوص البرمجية في مساحات العمل
تحترم الفلاتر تكوين مساحة العمل الخاصة بك: إذا كان لديك ملف package.json يحدد الحزم التي تعد جزءًا من مساحة العمل، فسيتم تقييد --filter على هذه الحزم فقط. أيضًا، في مساحة العمل يمكنك استخدام --filter لتشغيل النصوص البرمجية في الحزم الموجودة في أي مكان في مساحة العمل:
# الحزم
# src/foo
# src/bar
# في src/bar: تشغيل myscript في src/foo، لا حاجة لـ cd!
bun run --filter foo myscriptترتيب التبعيات
سيحترم Bun ترتيب تبعيات الحزمة عند تشغيل النصوص البرمجية. لنفترض أن لديك حزمة foo تعتمد على حزمة أخرى bar في مساحة العمل الخاصة بك، وكلتا الحزمتين تحتويان على نص برمجي build. عند تشغيل bun --filter '*' build، ستلاحظ أن foo ستبدأ التشغيل فقط بعد انتهاء bar.