تكوين التحقق من الأخطاء

أرى فرقًا كبيرًا في التكوين الافتراضي للتدقيق اللغوي، والطريقة التي يفترض أن يعمل بها.

يقوم التكوين الافتراضي بتثبيت حزمة eslint-config-discourse كاعتمادية تطوير:
https://www.npmjs.com/package/eslint-config-discourse

ومع ذلك، عندما أبحث عن الكود المصدري في https://github.com/discourse/eslint-config-discourse، تم إعادة توجيه المستودع إلى @discourse/lint-configs؛ وهي أيضًا حزمة ضمن المستودع الأحادي eslint-config-discourse. مع الاختبارات المضمنة، يفترض أن يكون eslint-config-discourse غلافًا، على ما أعتقد، ولكنه لا يعمل كما هو مفترض، على الأقل ليس في تجربتي:

تكوين التدقيق اللغوي الافتراضي

  1. إنشاء سمة جديدة باستخدام الأمر discourse_theme new.
  2. مراجعة تكوين التدقيق اللغوي الذي تم إنشاؤه:
    أ. .eslintrc
    {
      "extends": "eslint-config-discourse",
      "globals": {
        "settings": "readonly",
        "themePrefix": "readonly"
      }
    }
    
    ب. .template-lintrc.js:
    module.exports = {
      plugins: ["ember-template-lint-plugin-discourse"],
      extends: "discourse:recommended",
    };
    
    ج. package.json
    {
      "license": "MIT",
      "devDependencies": {
        "eslint-config-discourse": "latest"
      }
    }
    
  3. تشغيل Prettier على الحزمة، وسوف تشتكي من ملفات *.gjs:
    yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    
    خطأ: لم يتمكن من استنتاج محلل للملف ... .gjs

تكوين @discourse/lint-configs مباشرة

https://www.npmjs.com/package/@discourse/lint-configs

  1. تشغيل yarn remove -D eslint-config-discourse لإلغاء تثبيت الحزمة.
  2. تشغيل yarn add -D @discourse/lint-configs للتثبيت كاعتمادية تطوير.
  3. اتباع التعليمات لإنشاء ملفات تكوين التدقيق اللغوي:
    أ. استبدال ملف .eslintrc بـ .eslintrc.cjs
    module.exports = require("@discourse/lint-configs/eslint-theme");
    
    ب. إضافة ملف .prettierrc.cjs:
    module.exports = require("@discourse/lint-configs/prettier");
    
    ج. استبدال ملف .template-lintrc.js بـ .template-lintrc.cjs:
    module.exports = require("@discourse/lint-configs/template-lint");
    
  4. محاولة تشغيل Prettier مرة أخرى، وملاحظة أنه يعمل بدون أخطاء:
    $ yarn prettier --check --write "{common,javascripts,desktop,mobile,test,scss}/**/*.{js,gjs,es6,scss}"
    جارٍ التحقق من التنسيق...
    جميع الملفات المطابقة تستخدم نمط كود Prettier!
    ✨  تم الانتهاء في 0.46 ثانية.
    

إذًا، هل يجب أن أفترض أن واجهة سطر أوامر discourse_theme قديمة، وأنه للمضي قدمًا يجب أن أستخدم خيار @discourse/lint-configs في مشروعاتي؟

لا. ثق بذلك. قم بالتقديم إلى مستودعك وشاهد أوامر التدقيق اللغوي عندما تفشل أوامرك في النجاح.

إعجاب واحد (1)

مرحباً @pfaffman،

لقد أجريت اختبارًا بسيطًا على مستودعي. بينما يجتاز كلا الحالتين الإكمال، فإن الإعداد الافتراضي يولد خطأ لملف GJS، ولا يتم فحصه.

في النهج الثاني، تم التعرف على ملف GJS وتم تدقيقه بنجاح.

يرجى مقارنة الإجراءات في الفرع main مع الإجراءات في الفرع linting؛ لقد قدمت فقط إعدادات الخيار الثاني في الفرع linting:

main:
\u003chttps://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10325377606/job/28586838134?pr=1#step:6:19\u003e

linting:
\u003chttps://github.com/gormus/discourse-filtered-topic-lists/actions/runs/10333473217/job/28605865585?pr=3#step:6:17\u003e

لا ينبغي ذلك. سيقوم أحدث إصدار من واجهة سطر أوامر discourse_theme باستنساخ GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes وتكييفه بناءً على مدخلاتك. هذا يستخدم @discourse/lint-configs

تعليمات التحديث هنا:

4 إعجابات

شكرًا، هذا هو المطلوب. الآن يمكنني الحصول على إصدار (لم أحصل على إصدار سابقًا):

discourse_theme --version
2.1.2

… وقائمة أوامر محدثة:

discourse_theme --help
الاستخدام: discourse_theme COMMAND [DIR] [OPTIONS]

الأوامر:
  new DIR               - ينشئ سمة جديدة في الدليل المحدد.
  download DIR          - يقوم بتنزيل سمة من الخادم وتخزينها في الدليل المحدد.
  upload DIR            - يقوم بتحميل السمة من الدليل المحدد إلى Discourse.
  watch DIR             - يراقب السمة في الدليل المحدد ويقوم بمزامنة أي تغييرات مع Discourse.
  rspec DIR [OPTIONS]   - يقوم بتشغيل اختبارات RSpec في الدليل المحدد. يمكن تشغيل الاختبارات باستخدام مستودع Discourse محلي أو حاوية Docker.
    --headful           - يقوم بتشغيل اختبارات نوع النظام RSpec في وضع headful. ينطبق على كلا الوضعين.

    إذا تم تكوين الدليل المحدد للتشغيل في حاوية Docker، فسيتم دعم الخيارات الإضافية.
    --rebuild           - يجبر على إعادة بناء حاوية Docker.
    --verbose           - يقوم بتشغيل الأمر لإعداد حاوية Docker في وضع مطول.

الخيارات العامة:
  --reset               - يعيد تعيين التكوين للدليل المحدد.

وبالطبع الهيكل الذي تم إنشاؤه أحدث. :smiley:

5 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.