عند تشغيل Discourse Theme CLI في مستودع مكون سمة مع تثبيت pnpm node_modules، فإن الأمر discourse_theme watch . سيعرض أخطاء حول أدلة node_modules/.pnpm التي تتم مراقبتها بالفعل. بالنظر السطحي، هذا بسبب أن الحزم مرتبطة برمجياً.
لقد اختبرت هذا في GitHub Codespace جديد باستخدام مكون السمة mermaid الرسمي، باستخدام discourse_theme v2.1.3.
مقتطف من سجلات الأخطاء
** خطأ: الدليل تتم مراقبته بالفعل! **
الدليل: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/ember-template-recast@6.1.5/node_modules/@glimmer/reference
يتم مراقبته بالفعل من خلال: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@glimmer+reference@0.84.3/node_modules/@glimmer/reference
مزيد من المعلومات: https://github.com/guard/listen/blob/master/README.md
** خطأ: الدليل تتم مراقبته بالفعل! **
الدليل: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
يتم مراقبته بالفعل من خلال: /workspaces/discourse-mermaid-theme-component/node_modules/.pnpm/@humanwhocodes+retry@0.3.1/node_modules/@humanwhocodes/retry
مزيد من المعلومات: https://github.com/guard/listen/blob/master/README.md
أعتقد أن الأمر يتعلق بمراقبة discourse_theme للدليل بأكمله دون أي تجاهل لـ node_modules/.pnpm أو node_modules بشكل عام.
إنها ليست مشكلة كبيرة لأن discourse_theme watch يبدو أنه يعمل بشكل جيد بعد الأخطاء، لكنني لا أرى رسالة “مراقبة التغييرات…” بعد الأخطاء التي يفترض أن تأتي من https://github.com/discourse/discourse_theme/blob/main/lib/discourse_theme/watcher.rb#L45-L48، لذلك يمكن أن يسبب بعض الارتباك. بالإضافة إلى ذلك، لا يبدو الأمر جيدًا الانتقال من npm/yarn إلى pnpm فقط لرؤية CLI يرمي الكثير من الأخطاء على الشاشة.
أستخدمه من داخل دليل TC نفسه نظرًا لأنني عادةً ما أقوم بتطوير/اختبار السمة إما مقابل مثيل التطوير المحلي الخاص بي، أو نسخة تطوير من المنتدى ليست على جهازي، أو موقع Theme Creator (الذي يبدو أن مولد مفتاح API لا يعمل مؤخرًا). أحاول تجنب الارتباك بشأن البيئة التي أعمل فيها.
لقد قمت بنسخ mermaid TC باستخدام git إلى نفس مساحة الأكواد مثل تثبيت جديد لمساحة أكواد discourse وحاولت تشغيل discourse_theme watch من دليل discourse بدلاً من ذلك. يعطي نفس الأخطاء.
بالتأكيد هو اعتباطي، ولكنه سخيف بعض الشيء أن تحتاج إلى تشغيل discourse_theme من نسخة محلية من discourse عندما لا يكون مثيل discourse الذي يتم اختباره هو المثيل المحلي.
على أي حال، لقد فعلت كما اقترحت، سواء في مساحة أكواد GitHub جديدة، أو في بيئة التطوير الخاصة بي، ولا يزال يرمي نفس الأخطاء.
بالقراءة عبر السجل بأكمله (أو كل ما يمكن أن يتسع له سجل الطرفية)، فإن جميع الدلائل التي يرمي أخطاء عليها هي /node_modules/.pnpm. عند اختبار وتشغيل discourse_theme مقابل TC مختلف لم يتم تحديثه بعد لاستخدام pnpm بدلاً من yarn، لا أرى أي أخطاء، لذلك أنا متأكد بنسبة 100٪ تقريبًا من أن المشكلة تكمن في مراقبة .pnpm.
من https://pnpm.io/symlinked-node-modules-structure، يبدو أن الهيكل الطبيعي لـ node_modules يتم الحفاظ عليه عن طريق نقل كل الكود الفعلي إلى /node_modules/.pnpm وباقي الدلائل في /node_modules/ هي مجرد روابط رمزية إلى .pnpm. لذا فإن تجاهل .pnpm يتجنب خطأ “الدليل تتم مراقبته بالفعل!”.
لقد لعبت قليلاً مع gem discourse_theme وأضفت listener.ignore /node_modules\\/\\.pnpm/ إلى watcher.rb، ويبدو أنه يعمل بشكل جيد دون أي رسائل خطأ. لقد اكتشف حتى تثبيت حزمة pnpm جديدة.