Tslint: Функция: файл «.tslintignore» для исключения глобусов.

Созданный на 5 февр. 2014  ·  57Комментарии  ·  Источник: palantir/tslint

Обновление (01.06.2016)

Флаг --exclude CLI доступен, начиная с TSLint v3.6. Эта проблема теперь отслеживает запрос функции для файла .tslintignore .

Оригинальный выпуск

Копия: https://github.com/madskristensen/WebEssentials2013/issues/617

Из документов JsHint есть два флага для исключения в параметрах cli:

--исключать

Позволяет вам указать каталоги, которые вы НЕ хотите проверять.

--exclude-путь

Позволяет вам предоставить свой собственный файл .jshintignore. Например, вы можете указать JSHint на свой файл .gitignore и использовать его вместо стандартного .jshintignore.

Пожалуйста, предоставьте нам аналогичные флаги, чтобы мы могли передать файл .tslintignore для исключения файлов и папок, когда какой-либо пакетный/автоматизированный скрипт запускает на нем lint.

См. реализацию этой функции в JsHint: cli.js#L182-L208 и его вызывающий код; функция сбора .

Aged Away Enhancement

Самый полезный комментарий

Поднять выпуск трехлетней давности, разыскиваемый буквально сотнями людей, с поданным рабочим PR, но без каких-либо действий в течение полугода.

Все 57 Комментарий

хорошее предложение. мы рассмотрим это.

+1

Для TSD я хотел бы сгенерировать это в папке ввода пользователей при запуске нового проекта.

+1

Это необходимо для обработки ошибок lint как блокирующих. Я хочу, чтобы мой код был линтингован, а не код поставщика.

+1

+1

+1 Это именно то решение, которое нам нужно. Мы получаем ряд ошибок tslint в файлах d.ts. Возможность исключить как папки, так и определенные файлы будет очень важна, поскольку мы также не хотим анализировать код, который мы не писали.

Я готов попробовать это, но я не уверен, где это разместить. Хотим ли мы, чтобы это была cli-функция, или мы хотим поддерживать это и в библиотеке?
Если в библиотеке это немного странно, потому что метод lint() возвращает объект результата, поэтому нам нужно вернуть своего рода фиктивный пустой объект результата.
См. здесь Work in Progress, но да, не уверен насчет вышеперечисленного.
https://github.com/DickvdBrink/tslint/compare/palantir:master...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, уже могут исключать файлы через глобусы файлов/каталогов grunt.

Мы также рассматриваем возможность глобального исключения для всех служб на основе узлов в Web Essentials: https://github.com/madskristensen/WebEssentials2013/issues/589. Тем не менее наличие этой функции в tslint имеет свое значение.

Обновление: в web-essentials эта функция поставляется с ночной сборкой v2.2.4.

какие-либо обновления по этому поводу?

Это кажется относительно важной функцией, которой следует уделять приоритетное внимание. Хотел отметить интерес к этой фиче со стороны SO вопроса .

Однако я не думаю, что файл .tslintignore необходим, я предпочитаю более простую идею добавления опции CLI --exclude .

Возможно, было бы лучше поддерживать это через tsconfig.json (# 858), а не повторно реализовывать это во флаге CLI...

Хм, проблема в том, что вы можете захотеть скомпилировать файлы, отличные от тех, что вы lint. Таким образом, я потенциально мог бы использовать tsconfig.json , а затем также использовать --exclude , чтобы не линтинговать несколько обычно включаемых файлов.

В отличие от CLI, не будет ли это естественным образом вписываться в файл tslint.json, а затем добавить проверку игнорирования, которая анализирует «ignorePaths» на https://github.com/palantir/tslint/blob/master/src/tslint .

+1

+1, .tslintignore будет отличным

+1 для .tslintignore или добавить параметр для игнорирования определенных путей в tsconfig.json
Это может быть похоже на https://github.com/bbatsov/rubocop#включая исключая -files

Вам нужна помощь в реализации?

В качестве первого прохода мы скоро объединим #1006, что добавит простую опцию CLI --exclude . Это дает вам большую часть пути туда? Если вы используете дополнительный инструментарий поверх tslint , то он, вероятно, имеет поддержку glob/exclude (grunt/gulp/и т. д.). Насколько это важно для поддержки в tslint.json ?

Я больше не вызываю tslint из скриптов NPM, но это может быть важно для тех людей, которые это делают, поскольку NPM не предоставляет (и я верю, что никогда не будет) кроссплатформенную поддержку glob.

Я не думаю, что это хорошая идея добавлять параметры для файлов, которые вы хотите или не хотите анализировать в файле tslint.json . Только кажется, что он туда не подходит. Это также не соответствует настройке jshint . Да, это два разных инструмента, но практически они делают одно и то же. Поскольку TS — это расширенный набор JS, между ними должна быть некоторая согласованность. Я бы предпочел иметь файл .tslintignore (точно так же, как .jshintignore ) для обеспечения согласованности между JS и TS. Держите его отдельно от tsconfig.json , так как linting не компилируется.

+1 за вариант CLI, это хорошее начало.

Хотел упомянуть, что # 1006 объединился и был в выпуске месяц назад или около того, поэтому, если вы используете последнюю версию TSLint CLI, у вас будет доступный для использования флаг exclude .

+1

+1

+1

что люди здесь +1? начиная с версии 3.6 в интерфейсе командной строки доступен флаг --exclude , который позволяет исключать подстановочные знаки (файлы, пути и т. д.).

@adidahiya Например , это не помогает с WebStorm. Нет возможности указать флаги.

Я понимаю, что это должен быть запрос функции для разработчиков WebStorm, но кажется, что это очень легко реализовать на стороне ts-lint. И это делается для других линтинговых библиотек по умолчанию. Так почему бы не сделать так?

@fyodorvi круто, я обновил название и описание выпуска. Скорее всего, мы хотели бы разрешить путь к файлу .tslintignore так же, как мы разрешаем tslint.json .

Плюсы и минусы нового файла по сравнению с созданием нового поля в tslint.json ?

Для тех, кто хочет использовать tslint с WebStorm, есть обходной путь:
Вы можете поместить пустой (с '{}' внутри) файл tslint.json в папку node_modules и включить опцию «Поиск tslint.json» в WS. Это полностью сбросит все правила tslint для папки node_modules и ничего не скажет о коде поставщика (или вы можете добавить здесь определенные правила, если хотите)

Я следил за этой темой, чтобы иметь возможность исключать файлы, специально использующие vscode (поскольку до того, как имя было изменено на конкретное .tslintignore). Я хотел, чтобы другие, кто пытается интегрировать исключение с vscode, знали, что существует отдельная проблема и недавний PR для исключения tslint, специфичного для vscode.

@adidahiya должно быть достаточно поля с массивом каталогов или файлов внутри tslint.json, я бы предпочел не беспокоиться о другом файле для управления этим бизнесом, когда у нас уже есть файл конфигурации, определенный в проекте.

@Karabur ваш обходной путь не работает для меня, я даже пытался добавить пустой объект правил, я что-то упустил?

Достаточно одного файла. Это также соответствует тому, как работает tsconfig,json.

Опция exclude в tslint.json была бы неплохой (только один файл для использования таким образом), и это имя секции игнорирования glob tsconfig.json как хорошо (да, tsconfig.json include/exclude теперь поддерживает globs в последней версии TypeScript)

Кто-нибудь знает, что делает eslint, поскольку я уверен, что они тоже попали бы в это? :Роза:

Прямо сейчас tslint.json не контролирует, _что_ анализируется, он только контролирует, _как_ файлы анализируются. На самом деле, в зависимости от того, как вы все настроили, интерфейс командной строки TSLint может линковать разные файлы по разным правилам в одном и том же запуске.

Я не против варианта exclude в tslint.json , но это может привести к небольшому сдвигу парадигмы, и его следует тщательно обдумать.

PS Всегда рад услышать ваши отзывы @basarat , как раз сегодня читал ваш TS gitbook 😉

Я только что выпустил новую версию alm с tslint, интегрированным с версией 0.3.0 :heart:

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 какие-нибудь идеи, которые я должен попросить рассмотреть?

Поднять выпуск трехлетней давности, разыскиваемый буквально сотнями людей, с поданным рабочим PR, но без каких-либо действий в течение полугода.

Спасибо за толчок. Обратите внимание, что связанный 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 , @ басарат

Привет @JoshuaKGoldberg , это отличное начало. Я думаю, что многие люди в этой ветке надеялись получить от файла .tslintignore помимо функциональности то, что он будет соответствовать стандарту, уже установленному git, npm, eslint и т. д. Людям нравится этот стандарт, они чувствуют себя очень комфортно. с ним и как бы ожидал этого - например, я обнаружил эту проблему, когда создал файл .tslintignore , предполагая, что он будет работать, и был удивлен (правильно или неправильно), когда это не так.

Хм. Я сомневаюсь, что у меня есть два стандарта того, как это должно работать. Если в каталоге есть и .tslintignore , и linterOptions.exclude , как работает поведение?

Редактировать: о, и TypeScript также ломает тренд .*ignore с его tsconfig.json .

И eslint, и stylelint поддерживают флаг CLI --ignore-path или параметр JS ignorePath . Почему tslint не работает?
Пожалуйста, добавьте поддержку для этого! :молиться:

Учитывая #4534 и обходной путь linterOptions.exclude , теперь это кажется невозможным для TSLint. Рекомендуемый подход — перейти на typescript-eslint ; если вам нужно исключить некоторые файлы TypeScript из проверки TSLint, используйте linterOptions.exclude . Закрытие этого вопроса для домашнего хозяйства.

Если в linterOptions.exclude есть какой-то блокировщик, который затрудняет миграцию, пожалуйста, создайте новую проблему, чтобы сообщить об ошибке!

🤖 Бип-буп! 👉 TSLint устарел 👈 и вам следует переключиться на typescript-eslint ! 🤖

🔒 Эта проблема заблокирована, чтобы избежать дальнейших ненужных обсуждений. Спасибо! 👋

Была ли эта страница полезной?
0 / 5 - 0 рейтинги