اذهب إلى المحتوى

السؤال

نشر

السلام عليكم فريق أكاديمية حسوب،

أواجه مشكلة مع أمر الإنشاء وأحتاج رأيكم أو توجيهي للجهة المناسبة.

الأمر المطلوب أن يعمل:
bun create riser-bob my-app

الحزمة المنشورة على npm: create-riser-bob، والإصدار الحالي latest هو 1.0.9، وهو يحتوي القالب الصحيح (riser-bob ^1.1.0).

ما يحدث عندي (Windows، Bun 1.4.3):
- bun create riser-bob my-app ← يظهر لي قالب قديم (version 1.0.0 وriser-bob ^1.0.0)، وهو يطابق محتوى الإصدارات 1.0.0 إلى 1.0.2.
- bun create riser-bob@latest my-app ← يظهر القالب الجديد.

ما فحصته:
- npm pack للإصدارات 1.0.5 و1.0.6 و1.0.8 و1.0.9 ← القالب داخلها صحيح.
- لا يوجد مجلد .bun-create ولا متغير BUN_CREATE_DIR عندي.
- نفّذت bun pm cache rm، ومسار الـ cache هو C:\Users\Nokta.byte\.bun\install\cache.
- في مجلدي مشروع قديم باسم my-app، وأعرف أن bun create يرفض الإنشاء إذا كان المجلد موجودًا، ولذلك أنوي إعادة الاختبار باسم جديد ومن مجلد خارج المشاريع.

لم أحدد السبب بشكل نهائي بعد. هل واجه أحدكم سلوكًا مشابهًا مع bun create، أو تنصحوني بجهة أفضل لرفع المشكلة (مثل مستودع Bun على GitHub)؟

ارفقت لكم مشروع كامل لحل مشكلة

شكرًا لوقتكم.

RiserBob.zip

Recommended Posts

  • 0
نشر

الكود في المشروع المرفق سليم projects/create-riser-bob (الإصدار 1.0.9) يحتوي القالب الصحيح (riser-bob ^1.1.0)، والسكربت index.js ينسخ مجلد template كما هو ولا يعدّل الإصدار. وتأكدت أيضًا أنه لا توجد نسخة محلية من create-riser-bob داخل node_modules في المشروع لذلك المشكلة في بيئة Bun عند الطالب وليست في الحزمة لذلك يجب التحقق منه بالخطوات أدناه

كاش bunx وليس كاش bun install الأمر bun create riser-bob my-app يتحول داخليًا إلى 

bunx create-riser-bob my-app

وbunx يحفظ الحزم التي شغلها في مجلد مستقل داخل مجلد الملفات المؤقتة (%TEMP%)، باسم يشبه 

%TEMP%\bunx-<رقم>-create-riser-bob

عندما لا تحدد إصدارًا، يستخدم bunx النسخة الموجودة في هذا المجلد إن وجدها، ولا يتحقق دائمًا من وجود إصدار أحدث في npm والنسخة المحفوظة عندك تعود إلى الإصدارات 1.0.0–1.0.2 التي شغّلتها في البداية.

أما عند كتابة @latest فيجبر Bun على الرجوع إلى npm، ولهذا يظهر لك القالب الصحيح.

الأمر bun pm cache rm لا يحل المشكلة لأنه يمسح كاش التثبيت فقط (~\.bun\install\cache)، ولا يمسح مجلدات bunx الموجودة في %TEMP%.

احذف كاش bunx (في PowerShell) عن طريق الأمر التالي 

Get-ChildItem $env:TEMP -Directory -Filter "bunx-*create-riser-bob*" | Remove-Item -Recurse -Force

للاطلاع على هذه المجلدات قبل حذفها 

Get-ChildItem $env:TEMP -Directory -Filter "bunx-*"

ثم امسح كاش التثبيت أيضًا للاحتياط 

bun pm cache rm

ثم أعد الاختبار من مجلد فارغ وباسم جديد 

cd $env:USERPROFILE\Desktop
bun create riser-bob test-app-2
Get-Content .\test-app-2\package.json

يجب أن ترى "version": "1.1.0" و"riser-bob": "^1.1.0" أو يمكنك استخدام الأمر التالي كبديل 

bun create riser-bob@latest my-app

أو 

bunx create-riser-bob@latest my-app

بالتوفيق

  • 0
نشر

مرحبًا فريق أكاديمية حسوب، شكرًا لكم على التوضيح والخطوات.

طبّقت خطوات حذف كاش bunx وكاش تثبيت Bun، ثم أعدت الاختبار باستخدام CMD على Windows، لكن المشكلة ما زالت موجودة.

عند تنفيذ الأمر:

bun create riser-bob test-app-2

يتم إنشاء القالب القديم، وتظهر في package.json القيم التالية:

"version": "1.0.0", "riser-bob": "^1.0.0"

لكن عند تنفيذ الأمر:

bun create riser-bob@latest test-app-3

يتم إنشاء القالب الحديث بنجاح.

بناءً على هذه النتيجة، يبدو أن المشكلة ما زالت مرتبطة بسلوك الأمر دون تحديد الإصدار، رغم حذف الكاش حسب الخطوات التي أرسلتموها.

هل يمكنكم مساعدتي في تحديد السبب الدقيق، وكيف يمكن جعل الأمر bun create riser-bob my-app يجلب أحدث إصدار تلقائيًا دون الحاجة إلى إضافة @latest؟

شكرًا لكم على وقتكم ومساعدتكم.

  • 0
نشر
بتاريخ 3 دقائق مضت قال Zen Eddin Allaham:

مرحبًا فريق أكاديمية حسوب، شكرًا لكم على التوضيح والخطوات.

طبّقت خطوات حذف كاش bunx وكاش تثبيت Bun، ثم أعدت الاختبار باستخدام CMD على Windows، لكن المشكلة ما زالت موجودة.

عند تنفيذ الأمر:

bun create riser-bob test-app-2

يتم إنشاء القالب القديم، وتظهر في package.json القيم التالية:

"version": "1.0.0", "riser-bob": "^1.0.0"

لكن عند تنفيذ الأمر:

bun create riser-bob@latest test-app-3

يتم إنشاء القالب الحديث بنجاح.

بناءً على هذه النتيجة، يبدو أن المشكلة ما زالت مرتبطة بسلوك الأمر دون تحديد الإصدار، رغم حذف الكاش حسب الخطوات التي أرسلتموها.

هل يمكنكم مساعدتي في تحديد السبب الدقيق، وكيف يمكن جعل الأمر bun create riser-bob my-app يجلب أحدث إصدار تلقائيًا دون الحاجة إلى إضافة @latest؟

شكرًا لكم على وقتكم ومساعدتكم.

عندما تكتب bun create riser-bob my-app دون إصدار، يبحث Bun أولًا عن أمر اسمه create-riser-bob في مسارات PATH إذا وجده نفّذه مباشرة دون أن يتصل بـ npm.

أما مع @latest فيتخطى Bun هذا البحث ويجلب الحزمة من npm، وهذا يفسر لماذا يعمل @latest ولا يعمل الأمر دونه، ولماذا لم يفد حذف الكاش.

هذا يحدث غالبًا عندما تكون الحزمة قد ثبتت يومًا بأحد هذه الأوامر 

npm install -g create-riser-bob
bun add -g create-riser-bob
npm link        (داخل مجلد create-riser-bob أثناء التطوير)
bun link

يجب التحقق (في CMD) 

where create-riser-bob
npm ls -g --depth=0
bun pm ls -g

إذا أظهر الأمر where مسارًا مثل C:\Users\...\AppData\Roaming\npm\create-riser-bob.cmd أو C:\Users\...\.bun\bin\create-riser-bob.exe، فهذا هو السبب لذلك  يجب إزالة النسخة العامة 

npm uninstall -g create-riser-bob
bun remove -g create-riser-bob
npm unlink -g create-riser-bob

نفذ الأوامر الثلاثة، فلا ضرر من تنفيذ أمر لا ينطبق على حالتك ثم تحقق أن الأمر اختفى من PATH 

where create-riser-bob

يجب أن يظهر INFO: Could not find files for the given pattern(s) ثم إذا بقي ملف ظاهرًا، احذفه يدويًا من المسار الذي يعرضه where، سواء كان create-riser-bob.cmd أو .ps1 أو ملفًا بلا امتداد أو .exe ثم ثم بإعادة الاختبار، افتح نافذة CMD جديدة، ثم 

cd %USERPROFILE%\Desktop
bun create riser-bob test-app-4
type test-app-4\package.json

يجب أن ترى "version": "1.1.0" و"riser-bob": "^1.1.0" بعد ذلك سيجلب bun create riser-bob my-app أحدث إصدار تلقائيًا دون الحاجة إلى @latest ثم إذا لم يظهر شيء في where واستمرت المشكلة يمكنك ان ترسل لنا ناتج هذه الأوامر لنحدد السبب 

bun --version
where bun
where create-riser-bob
dir %USERPROFILE%\.bun\bin
dir %USERPROFILE%\.bun-create
dir .bun-create
set BUN

 

  • 0
نشر

مرحبًا فريق أكاديمية حسوب،

شكرًا جزيلًا لكم على وقتكم ومساعدتكم في تشخيص المشكلة. اتبعت الخطوات التي اقترحتموها، وتمكنت من تحديد السبب وحل المشكلة بنجاح بعد إزالة النسخة القديمة من create-riser-bob المثبّتة عالميًا عبر npm.

أقدّر لكم اهتمامكم وتعاونكم، وشكرًا لمساعدتي في الوصول إلى الحل. 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...