أتمتة إعداد إضافة Discourse باستخدام أداة `create-discourse-plugin` gem

:mega: هذه الإضافة مضمنة الآن في نواة Discourse. لا حاجة لاستخدام هذه الجوهرة.
لإنشاء إضافة جديدة، استخدم:
rake plugin:create[plugin-name]

منذ أن بدأت في تطوير إضافات Discourse، شعرت أن الإعداد العام يمكن أن يكون أكثر مباشرة. يجب أن نحصل على تجربة مطور أفضل بشكل عام عند إنشاء إضافة.

بروح ذلك، قمت بإنشاء هذه الجوهرة في وقت فراغي تسمى create-discourse-plugin

ماذا تفعل؟

تقوم باستنساخ وإنشاء نسخة من discourse-plugin-skeleton تحت اسم المستخدم أو المؤسسة الخاصة بك بناءً على الخيار الذي اخترته. بعد القيام بذلك، تقوم بتحديث جميع العناصر النائبة باسم إضافتك. مما يجعلها جاهزة لبدء التطوير.

كيف تستخدم؟

بروح مماثلة لـ npx create-next-app أو npx meteor

 gem exec create-discourse-plugin <plugin-name>

المتطلبات

المساهمة

16 إعجابًا

شكراً لك! لقد فكرت في القيام بذلك في كل مرة قمت فيها بإنشاء إضافة جديدة خلال العامين الماضيين! يبدو أنك قمت بعمل أفضل بكثير مما كنت سأفعله. لا أطيق الانتظار لتجربتها!

6 إعجابات

هذا رائع جدًا، متى ستشعر بالملل بما يكفي لإنشاء

gem exec create-discourse-theme <theme-name>

؟ :wink:

6 إعجابات

سيكون discourse_theme new ؛)


@grubba كيف ستشعر حيال دمج هذا في النواة كمهمة rake؟ مثل

bin/rake plugin:create

يحتاج الناس إلى بيئة تطوير أساسية عاملة للعمل على الإضافات على أي حال، لذا يبدو أنها مناسبة جيدة؟ سيجعلها أيضًا “رسمية” تمامًا، وأسهل للفريق بأكمله في صيانتها.

أتساءل عما إذا كان من الأفضل جعلها 100٪ git، بدلاً من الاعتماد على الأشخاص الذين يستخدمون github (ووجود gh cli)؟ يستخدم بعض الأشخاص خدمات أخرى لاستضافة إضافاتهم، وقد لا يرغبون أيضًا في جعلها عامة على الفور.

في discourse_theme، نحافظ على ذاكرة تخزين مؤقت محلية لهيكل السمات، لذا فهي تعمل حتى في وضع عدم الاتصال!

6 إعجابات

دو! أنا أستخدم فقط watch! وأعتقد أنه عندما جربته منذ فترة طويلة، لا أعرف. لكنني نسيت أمره. :exploding_head:

إعجابَين (2)

أعتقد أن هذا منطقي! لقد اختبره الناس، وتلقيت بعض الشكاوى والملاحظات وقمت ببعض التعديلات. أعتقد أنه في حالة جيدة جدًا لجعله “رسميًا”. سأعمل خلال الأيام القليلة القادمة على إضافته إلى النواة.

أتفق على أن استخدام gh ليس مثاليًا، وسأجد حلاً. ربما ما يفعله discourse_theme new هو ما كنت أبحث عنه…

5 إعجابات

لدي أخبار رائعة! لقد قمت للتو بـ دمج مهمة rake الجديدة هذه في النواة:

rake plugin:create[name]

إنها تعمل بشكل مشابه لـ gem، لكنها لا تدفع إلى GitHub، مما يمنحك خيار ما يجب فعله - تمامًا مثل discourse_theme new

سأقوم بتمييز gem هذا على أنه مهمل، حيث لدينا حل أكثر رسمية

10 إعجابات

تحرير: لقد أزلت Gemfile.lock من .gitignore، كما هو مذكور. والآن يعمل.

لا يُسمح بـ Gemfile.lock في .gitignore
Cloning 'https://github.com/discourse/discourse-plugin-skeleton' to '/home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers'...
Initializing git repository...
Initialized empty Git repository in /home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers/.git/
The following paths are ignored by one of your .gitignore files:
Gemfile.lock
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
rake aborted!
Command failed with exit 1: git
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:352:in `system'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:352:in `block (2 levels) in <main>'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:344:in `chdir'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:344:in `block in <main>'
Tasks: TOP => plugin:create
(See full trace by running task with --trace)

حاولت مرة أخرى بعد تشغيل git config advice.addIgnoredFile false بنفس النتيجة.

وأيضًا

$ gem exec create-discourse-theme discourse-public-bookmark-timers

ERROR:  Could not find a valid gem 'create-discourse-theme' (>= 0) in any repository
ERROR:  Possible alternatives: create-discourse-plugin, discourse_theme, askclass-course-theme, date_discreter, opensource-theme
إعجاب واحد (1)