نحن نحظر govnokod أو المكونات الإضافية المفيدة لـ ESLint

أعتقد أن الكثير من الناس يعرفون أنه من المعتاد في هذه الأيام استخدام أدوات خاصة للتحقق من الشفرة بحثًا عن الأخطاء ومطابقة النمط المعتمد في الفريق.


اليوم أريد أن أتطرق إلى ESLint ، وهي أداة رائعة للتحقق من أخطاء مشروعات JavaScript.


لن أكتب في هذه المقالة عن نقاط واضحة ، مثل إعداد eslint لمشروعك: آمل أن تتمكن من قراءة الوثائق في هذا الجزء بنفسك وربطها بنفسك. وهنا سنناقش ما هي "المجموعة" الإضافية التي يمكنك توصيلها بالأداة الأصلية وكيف يمكنك تكوينها لجعلها تعمل لصالحك.


eslint-config-airbnb


الآن نستخدم التكوين المعد مع القواعد من فريق airbnb كأساس للقواعد. معيارهم لكتابة كود جافا سكريبت يحتوي الآن على أكثر من 73 ألف نجم على جيثب ويستخدمه العديد من المنظمات المعروفة . أعتقد أنه يمكنك الوثوق به.


يربط هذا التكوين بين العديد من الحزم المهمة للمشروع في آن واحد: eslint و eslint-plugin-import و eslint-plugin-react eslint-plugin-jsx-a11y و eslint-plugin-jsx-a11y ، والتي تحتوي على قواعد إضافية للتحقق من صحة التعليمات البرمجية الخاصة بك. تجدر الإشارة إلى أن ملف التكوين هذا يعني أنك تستخدم React.js في مشروعك. إذا لم يكن الأمر كذلك ، فيمكنك دائمًا تثبيت التكوين eslint-config-airbnb-base ، والذي يحتوي على كل نفس ، باستثناء تبعية المكون الإضافي لـ React.js.


دعونا نلقي نظرة فاحصة على حزم المكونات الإضافية ومعرفة الفحوصات التي ستضيفها إلى رمز المشروع الخاص بك:


استيراد البرنامج المساعد


سيضيف هذا المكون الإضافي التحقق من صحة جميع عمليات الاستيراد الخاصة بك إلى مشروعك وسيضمن وجود جميع التبعيات المستوردة في المشروع ، ومتصلة بترتيب مناسب للعمل اللاحق ، وما إلى ذلك.


رد الفعل-رد الفعل


يسمح لك المكون الإضافي بكتابة رمز أكثر صحة على React.js ويوفر لك من المضادات الشائعة ، كما يفرض عليك أن تنسب إلى جميع المكونات الخاصة بك أوصاف أنواع البيانات التي يقبلونها.


eslint-plugin-jsx-a11y


ينطبق هذا المكون الإضافي أيضًا على المشاريع على React.js كما أنه مفيد للغاية في العمل. ستفرض عليك كتابة HTML الذي سيكون أفضل بكثير بما يتماشى مع معايير إمكانية الوصول. ستصبح مشاريعك أكثر ملاءمة للأشخاص ذوي الإعاقة.




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


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


ملحقات إضافية لـ ESLint


يمكنك دراسة المشروع أعلاه بمفردك والعثور على مكونات إضافية مثيرة للاهتمام لنفسك شخصيًا ، لكنني سأكتب هنا ما يثير اهتمامي.


عقدة إسكلينت-البرنامج المساعد


مكون إضافي مصمم خصيصًا لمشاريع Node.js. أعتقد أن الكثير يمكن أن يكون مفيدًا إذا كانوا لا يزالون لا يستخدمونه في المنزل.


eslint-plugin-lodash


سيجعلك هذا البرنامج المساعد "تحب" Lodash ويعيد كتابة معظم طرق JS الأصلية إلى طرق من Lodash ، كما أنه يحتوي على العديد من التوصيات لكتابة التعليمات البرمجية التي تستخدم سلاسل Lodash. بشكل عام ، إنه مثير للاهتمام للغاية ، ولكن حتى الآن لم أقم بتنفيذ هذا لمجرد أنه علينا الآن إعادة كتابة الكثير من التعليمات البرمجية للامتثال لقواعد هذا المكون الإضافي. ولكن بالنسبة للمستقبل ، أخذتها بنفسي.


متوافق مع المكونات الإضافية


يسمح لك هذا البرنامج المساعد مباشرة أثناء التطوير للتحقق من توافق الكود الذي كتبته مع المتصفحات الحالية التي تستهدفها في مشروعك في الوقت الحالي. في الوقت الحالي ، لم أقم بتوصيله بمشروعي لأننا نستخدم الآن خدمة polyfill.io ، التي تربط تلقائيًا جميع الملفات المتعددة الضرورية بكل متصفح فردي ، وبالتالي فإن مشكلة توافق الشفرة ككل غير موجودة إلى حد ما. ولكن بالنسبة للمستقبل ، أود أيضًا أن أدون ملاحظة لنفسي: ماذا لو كنت بحاجة إليها؟


eslint-plugin-optimize-regex


مكون إضافي يخبرك بكيفية تحسين تعبيراتك العادية. لماذا لا تثبت؟ اعتقدت أنه لن يكون غير ضروري.


eslint-plugin-sonarjs


واحدة من أكثر الاكتشافات إثارة للاهتمام من هذه القائمة من مجموعات الجسم الإضافية. يحتوي هذا البرنامج المساعد على مجموعة كاملة من الفحوصات ، والتي بفضلها تجد أقسامًا مكتوبة بشكل سيئ من التعليمات البرمجية ، والوظائف نفسها وبنيات بسيطة لا معنى لها ، ويقدم إعادة كتابتها (من المؤسف أنه لا يعرف هو نفسه كيفية إعادة كتابتها: D). إذا كنت لا ترغب في تحليل الشفرة الخاصة بك إلى كتل صغيرة واضحة وكتابة وظائف معقدة في أكثر من 100 سطر - انتظر التحذيرات من هذا البرنامج المساعد من أن التعقيد المعرفي لمثل هذه الأماكن في المشروع مرتفع للغاية بالنسبة للدعم على المدى الطويل ويجب إعادة كتابته.


eslint-plugin-no-loops


سيقسم هذا البرنامج الإضافي عليك ببساطة عندما تريد كتابة حلقات قياسية أو أثناءها. في الوقت الحاضر ، لطالما كان من المعتاد استخدام forEach ، forEach ، forEach ، وما إلى ذلك. أنا أتفق بشكل عام مع المؤلف وأدخل المكوّن الإضافي في مشروعي.


eslint-plugin-no-use-extension-original


مكون إضافي سيمنعك من توسيع النماذج الأولية لكائنات JavaScript القياسية. قل لا! بقع قرد. وهذا صحيح.


وعد البرنامج المساعد


مكون إضافي يساعدك على كتابة الوعود الصحيحة ويحميك من الأخطاء الشائعة عند العمل معها. كما أنها مفيدة للغاية ، على ما أعتقد.




إليك قائمة بالمكونات الإضافية في النهاية. ماذا تستخدم في مشاريعك لاختبار الكود الخاص بك؟


في الختام ، سأترك مثالاً على تكوين ملف .eslintrc من المشروع الحالي:


.eslintrc
 { "parser": "babel-eslint", "extends": [ "airbnb", "plugin:import/errors", "plugin:import/warnings", "plugin:jsx-a11y/recommended", "plugin:sonarjs/recommended", "plugin:promise/recommended" ], "plugins": ["react", "jsx-a11y", "optimize-regex", "sonarjs", "no-loops", "no-use-extend-native", "promise"], "rules": { "react/jsx-filename-extension": "off", "jsx-a11y/click-events-have-key-events": "off", "import/no-extraneous-dependencies": [ "error", { "packageDir": "./" } ], "allowTernary": true, "optimize-regex/optimize-regex": "warn", "sonarjs/cognitive-complexity": ["error", 30], "no-loops/no-loops": 2, "no-use-extend-native/no-use-extend-native": 2, }, "settings": { "import/resolver": "webpack" } } 

Source: https://habr.com/ru/post/ar417841/


All Articles