Tslint: الميزة: ملف ".tslintignore" لاستبعاد الكرات الأرضية

تم إنشاؤها على ٥ فبراير ٢٠١٤  ·  57تعليقات  ·  مصدر: palantir/tslint

تحديث (2016/06/01)

--exclude علم CLI متاح منذ TSLint v3.6. تتتبع هذه المشكلة الآن طلب ميزة لملف .tslintignore .

البند الاصلي

نسخة إلى: https://github.com/madskristensen/WebEssentials2013/issues/617

من مستندات JsHint ، هناك علامتان للاستبعاد في خيارات cli:

- استثناء

يسمح لك بتحديد الدلائل التي لا تريد فحصها.

- استبعاد المسار

يسمح لك بتقديم ملف .jshintignore الخاص بك. على سبيل المثال ، يمكنك توجيه JSHint إلى ملف .gitignore الخاص بك واستخدامه بدلاً من .jshintignore الافتراضي.

يرجى تزويدنا بالعلامات المتشابهة ، حتى نتمكن من تمرير ملف .tslintignore لاستبعاد الملفات والمجلدات عند تشغيل نص برمجي للمنفذ الدفعي / الآلي عليه.

راجع تنفيذ JsHint لهذه الميزة: cli.js # L182-L208 والمتصل بها ؛ جمع الوظيفة .

Aged Away Enhancement

التعليق الأكثر فائدة

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

ال 57 كومينتر

اقتراح جيد. سننظر فيه.

+1

بالنسبة لـ TSD ، أود إنشاء هذا في مجلد كتابة المستخدمين عند بدء مشروع جديد.

+1

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

+1

+1

+1 هذا هو بالضبط الحل الذي نحتاجه. نحصل على عدد من أخطاء tslint على ملفات d.ts. ستكون القدرة على استبعاد كل من المجلدات والملفات المحددة أمرًا مهمًا للغاية لأننا أيضًا لا نريد فحص التعليمات البرمجية التي لم نكتبها.

أنا على استعداد لتجربة هذا ولكني لست متأكدًا من مكان وضعه. هل نريد أن تكون هذه ميزة cli أم نريد دعمها في المكتبة أيضًا؟
إذا كان الأمر غريبًا بعض الشيء في المكتبة لأن طريقة lint () ترجع كائن نتيجة ، لذلك نحتاج إلى إرجاع كائن نتيجة فارغ نوعًا ما وهمي.
انظر هنا للحصول على عمل قيد التقدم ولكن نعم ، لست متأكدًا من الأشياء المذكورة أعلاه.
https://github.com/DickvdBrink/tslint/compare/palantir : ماستر ... Di ckvdBrink: ignoreFile

نحن نستخدم أدوات Visual Studio و Web Essentials. بالنسبة لنا ، سيكون سير العمل المثالي هو تحديد ملف .tjshintignore يحتوي على شيء مثل typings\ والذي سيتجاهل جميع ملفات d.ts في هذا المجلد. لست متأكدًا تمامًا مما إذا كانت Web Essentials تستخدم ميزة cli أم المكتبة ، لذلك يصعب علي معرفة ذلك. أنا في الواقع الآن في حيرة من أمري ، لأنني وجدت هذا الموضوع الذي يبدو أنه يشير إلى حل لهذا قد يكون موجودًا بالفعل؟ https://github.com/madskristensen/WebEssentials2013/issues/617

أعتقد أنهم يستخدمون CLI.
https://github.com/madskristensen/WebEssentials2013/blob/aaa83c3f6f7c9b051d7ef34be8498c6b67f37fca/EditorExtensions/TypeScript/Linters/TsLintCompiler.cs

أعتقد أنه مغلق لأن شخصًا ما أنشأ هذه المشكلة ، انظر الاقتباسات أدناه:

Would you like to send them a feature request?
I see somebody already has. Thanks :-)

آه ، هذا منطقي. أخطأت في قراءة ذلك.

أعتقد أن تنفيذه عبر CLI جيد في الوقت الحالي. يمكن للأشخاص الذين يستخدمون grunt-tslint بالفعل استبعاد الملفات عبر ملف / دليل globbers الخاص بـ grunt.

نحن ندرس أيضًا الاستبعاد العالمي لجميع الخدمات المستندة إلى العقد في أساسيات الويب: https://github.com/madskristensen/WebEssentials2013/issues/589. ومع ذلك ، فإن وجود هذه الميزة في tslint له أهميته الخاصة.

تحديث: في أساسيات الويب ، يتم شحن الميزة مع الإصدار 2.2.4 للإصدار الليلي.

أي تحديثات على هذا؟

يبدو أن هذه ميزة مهمة نسبيًا يجب إعطاؤها الأولوية. أريد أن أشير إلى الاهتمام بهذه الميزة من سؤال SO .

لا أعتقد بشكل خاص أن هناك حاجة إلى ملف .tslintignore على الرغم من ذلك ، فأنا أفضل الفكرة الأبسط لإضافة خيار --exclude CLI.

قد يكون من الأفضل دعم ذلك عبر tsconfig.json (# 858) بدلاً من إعادة تنفيذ ذلك في علامة CLI ...

حسنًا ، تكمن الصعوبة في ذلك في أنك قد ترغب في تجميع ملفات مختلفة عن تلك التي تريدها. لذلك من المحتمل أن أرى استخدام tsconfig.json ثم استخدام --exclude لعدم فحص بعض الملفات المضمنة عادةً.

على عكس CLI ، ألن يكون هذا مناسبًا بشكل طبيعي في ملف tslint.json ثم أضف فحص التجاهل الذي يوزع "ignorePaths" على https://github.com/palantir/tslint/blob/master/src/tslint .ts # L46 ؟

+1

+1 ، سيكون ملف .tslintignore رائعًا

+1 لـ tslintignore أو إضافة خيار لتجاهل مسارات معينة في tsconfig.json
يمكن أن يكون مشابهًا لـ https://github.com/bbatsov/rubocop#includingexcluding -files

هل تحتاج إلى مساعدة في تنفيذه؟

كمرحلة أولى ، سنقوم بدمج # 1006 قريبًا ، مما يضيف خيار CLI --exclude بسيطًا. هل هذا يأخذك إلى هناك؟ إذا كنت تستخدم أدوات إضافية فوق tslint ، فمن المحتمل أنه يحتوي على دعم glob / استبعاد (grunt / gulp / إلخ). ما مدى أهمية هذا الدعم في tslint.json ؟

لم أعد أتصل بـ tslint من نصوص NPM ، لكن قد يكون مهمًا لأولئك الأشخاص الذين يفعلون ذلك لأن NPM لا يوفر (وأعتقد أنه لن يفعل أبدًا) دعمًا عالميًا عبر الأنظمة الأساسية.

لا أعتقد أنه من الجيد إضافة خيارات للملفات التي تريدها أو لا تريد فحصها في ملف tslint.json . لا يبدو أنها مناسبة هناك. كما أنه لا يتوافق مع كيفية تكوين jshint . نعم ، إنهما أداتان مختلفتان لكنهما عمليًا يقومان بنفس الشيء. نظرًا لأن TS عبارة عن مجموعة فائقة من JS ، يجب أن يكون هناك بعض الاتساق بين الاثنين. أفضل أن يكون لدي ملف .tslintignore (تمامًا مثل .jshintignore ) للحفاظ على التناسق بين JS و TS. اجعله منفصلاً عن tsconfig.json نظرًا لأن الفحص لا يتم تجميعه.

+1 لخيار CLI ، إنها بداية جيدة.

أردت الإشارة إلى أن # 1006 مدمج وكان في إصدار منذ شهر أو نحو ذلك ، لذلك إذا كنت تستخدم أحدث إصدار من TSLint CLI ، فستتوفر لك علامة exclude متاحة للاستخدام.

+1

+1

+1

ماذا يفعل الناس + 1 هنا؟ أصبح العلم --exclude متاحًا في CLI منذ الإصدار 3.6 والذي يسمح لك باستبعاد globs (الملفات ، المسارات ، أيًا كان).

adidahiya لا يساعد مع WebStorm ، على سبيل المثال. لا يوجد خيار لتحديد العلامات.

أتفهم أنه يجب أن يكون طلب ميزة لمطوري WebStorm ، ولكن يبدو أنه من السهل جدًا تنفيذه على جانب ts-lint. ويتم ذلك افتراضيًا لمكتبات الفحص الأخرى. فلماذا لا تجعلها كذلك؟

fyodorvi رائع ، لقد قمت بتحديث عنوان الإصدار ووصفه. من المحتمل أننا نرغب في حل مسار الملف .tslintignore بنفس الطريقة التي نحل بها tslint.json .

إيجابيات / سلبيات الملف الجديد مقابل جعله حقلاً جديدًا في tslint.json ؟

هناك حل بديل لأولئك الذين يريدون استخدام tslint مع WebStorm:
يمكنك وضع ملف فارغ (مع وجود '{}' بالداخل) tslint.json ملف في مجلد node_modules الخاص بك وتمكين خيار "Search for tslint.json` في WS. سيؤدي ذلك إلى إعادة تعيين جميع قواعد tslint لمجلد node_modules تمامًا ، وسيظل صامتًا بشأن رمز المورد (أو يمكنك إضافة قواعد محددة هنا إذا كنت تريد)

لقد كنت أتابع هذا الموضوع لأتمكن من استبعاد الملفات التي تستخدم vscode على وجه التحديد (منذ ذلك الحين قبل تغيير الاسم ليكون خاصًا بـ tslintignore). كنت أرغب في السماح للآخرين بمعرفة من يحاول دمج الاستثناء مع vscode بوجود مشكلة منفصلة والعلاقات العامة الأخيرة لاستبعاد tslint الخاصة بـ vscode.

adidahiya ، يجب أن يكون الحقل الذي يحتوي على مجموعة من الملفات أو الملفات الموجودة داخل tslint.json كافيًا ، أفضل عدم القلق بشأن ملف آخر للتحكم في هذا العمل عندما يكون لدينا بالفعل ملف تكوين محدد في مشروع.

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

ملف واحد يكفي. قد يتماشى هذا أيضًا مع كيفية عمل tsconfig، json.

سيكون خيار exclude في tslint.json رائعًا (ملف واحد فقط لاستخدامه بهذه الطريقة) وهذا هو اسم قسم التجاهل glob في tsconfig.json كـ حسنًا (نعم ، تتضمن tsconfig.json / استبعاد الآن دعم globs في TypeScript الأحدث)

هل يعرف أي شخص ما الذي يفعله eslint لأنني متأكد من أنه سيصيب هذا أيضًا؟ :الوردة:

في الوقت الحالي ، لا يتحكم tslint.json في _what_ الذي يتم فحصه ، فهو يتحكم فقط في _كيف _ يتم فحص الملفات. في الواقع ، بناءً على كيفية إعدادك للأشياء ، يمكن لـ TSLint CLI بالفعل فحص ملفات مختلفة بقواعد مختلفة جميعها في نفس التشغيل.

أنا لست ضد خيار exclude في tslint.json ، لكن قد ينتهي به الأمر إلى تحول بسيط في النموذج ويجب التفكير فيه بعناية.

يسعد PS دائمًا سماع ملاحظاتك basarat ، لقد كنت أقرأ فقط TS gitbook اليوم 😉

لقد أصدرت للتو إصدارًا جديدًا من alm مع tslint intergrated مع الإصدار 0.3.0 : القلب:

linter

بعد وضعه في ذهني ، إليك ملخص التصميم الذي استخدمته لتكامل IDE ويبدو أنه يعمل بشكل جميل:

  • يتم فحص كافة الملفات الموجودة في tsconfig.json الحالي باستثناء ملفات .d.ts
  • يجب تحديد tslint.json باستخدام findup من tsconfig.json .

لقد قمت بتوثيق هذا هنا أيضًا: https://basarat.gitbooks.io/alm/content/features/lint.html لا تتردد في استخدام الأفكار / المصدر لأي تكاملات IDE أخرى: rose:

basarat أعتقد أن هذه الخيارات تبدو مثالية! لم أحاول بعد ، لكن سأجربها في وقت ما قريبًا

الرجاء التوقف عن نشر تعليقات 1+ واستخدام ميزة Github للتصويت المضمنة في وصف الإصدار الأصلي. سأحذف تعليقات +1 الآن.

ثلاث سنوات مضت وما زال هذا غير مطبق؟ كيف ذلك ، هذه هي واحدة من أكثر الميزات تافهة وأهمية IMO.

ثلاث سنوات مضت وما زال هذا غير مطبق؟ كيف ذلك ، هذه هي واحدة من أكثر الميزات تافهة وأهمية IMO.

إنه OSS بعد كل شيء: إذا كنت تريد ذلك ، فأرسل PR.

المشكلة الحالية بالنسبة لي هي:

--exclude {node_modules,.git,cache}

عامل التشغيل {} لا يعمل ولا أرى بأي طريقة كيفية استبعاد الدلائل المختلفة ...

@ monolithed :

--exclude node_modules --exclude .git --exclude cache

يجب أن تفعل ما تريد

ثلاث سنوات مضت وما زال هذا غير مطبق؟ كيف ذلك ، هذه هي واحدة من أكثر الميزات تافهة وأهمية IMO.

إنه OSS بعد كل شيء: إذا كنت تريد ذلك ، فأرسل PR.

لقد قدمت PR: https://github.com/palantir/tslint/issues/2409

abenhamdine أي أفكار يجب أن أطلب مراجعتها؟

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

شكرا على النتوء. لاحظ أن PR المرتبط ، # 2409 ، مخصص لخيار تكوين جديد في tslint.json ، وهو يختلف تمامًا عن الإصدار الأصلي (ملف .tslintignore ). إنها خطوة في الاتجاه الصحيح رغم ذلك ؛ لقد تركت المزيد من تعليقات CR.

+1
خيارات:

  • قم بإرسال ملف .tslintignore إلى المجلد المطلوب تجاهله.
  • ملف tslint.json (ملف عمومي) خاصية جديدة exclude مع قائمة بالمسارات / المجلدات.
    سيكون هذا لطيفا.

بالمناسبة ، تم إصدار الميزة بـ [email protected]

حق. مثال:
أنشئ مجلدًا في مشروعك باسم .vscode وملف داخل settings.json .

{
  "tslint.exclude": "**/app/models/**"
}

لتجاهل جميع الملفات في / app / Models /. لا تتردد في تحسين التعبير. :)

+1

+1
تحتاج .tslintignore

أوه ، هذا يجب أن يدعمه الآن linterOptions . حسب https://palantir.github.io/tslint/usage/configuration/ :

  • linterOptions?: { exclude?: string[] } :

    • exclude: string[] : مجموعة من الكرات الأرضية. لن يتم فحص أي ملف يتطابق مع هذه الكرات الأرضية. جميع أنماط الاستبعاد مرتبطة بملف التكوين الذي تم تحديدها فيه.

هل هذا يعمل بشكل جيد بما فيه الكفاية للجميع؟ هل هناك أي شيء آخر يجب أن يفعله .tslintignore ؟

/ cc @ am11 ، basarat

مرحبًا JoshuaKGoldberg ، هذه بداية رائعة. أعتقد أن ما كان يأمله الكثير من الأشخاص في هذا الموضوع من ملف .tslintignore إلى جانب الوظيفة هو أنه سيتوافق مع المعيار المحدد بالفعل بواسطة git و npm و eslint وما إلى ذلك. الأشخاص الذين يحبون هذا المعيار ، يشعرون براحة كبيرة معها ، وتوقعها نوعًا ما - على سبيل المثال ، وجدت هذه المشكلة عندما أنشأت ملفًا .tslintignore بافتراض أنه سيعمل ، وفوجئت (عن صواب أو خطأ) عندما لم يحدث ذلك.

همم. لدي شك في وجود معيارين لكيفية عمل ذلك. إذا كان لديك كل من .tslintignore و linterOptions.exclude في دليل ، فكيف يعمل السلوك؟

تحرير: أوه ، وكسر TypeScript أيضًا الاتجاه .*ignore مع tsconfig.json .

يدعم كل من eslint و stylelint علامة --ignore-path CLI أو الخيار ignorePath JS. لماذا لا تسلينت؟
الرجاء إضافة دعم لهذا! :صلى:

بالنظر إلى الحل # 4534 والحل البديل linterOptions.exclude ، يبدو هذا خارج نطاق TSLint الآن. النهج الموصى به هو الترحيل إلى printcript-eslint ؛ إذا كنت تريد استبعاد بعض ملفات TypeScript من فحص TSLint ، فاستخدم linterOptions.exclude . إغلاق هذه القضية للتدبير المنزلي.

إذا كان هناك بعض أدوات الحظر في linterOptions.exclude مما يجعل عملية الترحيل أكثر صعوبة ، فالرجاء إرسال مشكلة جديدة للإبلاغ عن الخطأ!

🤖 صوت صفير! 👉 تم إهمال TSLint 👈 ويجب عليك التبديل إلى print-eslint ! 🤖

🔒 تم إقفال هذه المشكلة لمنع المزيد من المناقشات غير الضرورية. شكرا لك! 👋

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات