Tslint: 功能:“.tslintignore”文件排除 glob

创建于 2014-02-05  ·  57评论  ·  资料来源: palantir/tslint

更新 (2016/06/01)

--exclude CLI 标志自 TSLint v3.6 起可用。 此问题现在跟踪.tslintignore文件的功能请求。

原始问题

抄送: https ://github.com/madskristensen/WebEssentials2013/issues/617

JsHint docs中,cli 选项中有两个排除标志:

- 排除

允许您指定不想被 linted 的目录。

--排除路径

允许您提供自己的 .jshintignore 文件。 例如,您可以将 JSHint 指向您的 .gitignore 文件并使用它来代替默认的 .jshintignore。

请向我们提供类似的标志,以便我们可以传递 .tslintignore 文件以在某些批处理/自动执行器脚本在其上运行 lint 时排除文件和文件夹。

参见 JsHint 对该功能的实现: cli.js#L182-L208及其调用者; 收集功能

Aged Away Enhancement

最有用的评论

碰到了一个数百人想要的 3 年以上的问题,提交了一份有效的 PR,但半年没有采取任何行动。

所有57条评论

好建议。 我们会调查的。

+1

对于 TSD,我想在初始化新项目时在用户输入文件夹中生成它。

+1

这是将 lint 错误视为阻塞所必需的。 我希望我的代码被检查,而不是供应商代码。

+1

+1

+1 这正是我们需要的解决方案。 我们在 d.ts 文件上收到了一些 tslint 错误。 能够排除文件夹和特定文件将非常重要,因为我们也不想检查我们没有编写的代码。

我愿意试一试,但我不知道把它放在哪里。 我们希望这是一个 cli 功能还是我们也想在库中支持它?
如果在库中有点奇怪,因为 lint() 方法返回一个结果对象,所以我们需要返回一个有点虚拟的空结果对象。
请参阅此处了解正在进行的工作,但是是的,不确定上述内容。
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 的文件/目录 globbers 排除文件。

我们还在考虑对 Web Essentials 中所有基于节点的服务进行全局排除: https://github.com/madskristensen/WebEssentials2013/issues/589。 尽管如此,在 tslint 中具有该功能有其自身的意义。

更新:在 web-essentials 中,该功能随 nightly build v2.2.4 一起提供。

对此有任何更新吗?

这似乎是一个相对重要的功能,应该优先考虑。 想从一个SO question中注意到对这个功能的兴趣。

我并不特别认为需要.tslintignore文件,但我更喜欢添加--exclude CLI 选项的更简单的想法。

通过 tsconfig.json (#858) 支持这一点可能会更好,而不是在 CLI 标志中重新实现它......

嗯,这样做的困难在于您可能想要编译与 lint 不同的文件。 所以我可能会看到使用tsconfig.json ,然后还使用--exclude来不检查一些通常包含的文件。

与 CLI 不同,这不是 tslint.json 文件的自然契合,然后在https://github.com/palantir/tslint/blob/master/src/tslint添加一个解析“ignorePaths”的忽略检查

+1

+1,一个 .tslintignore 会很棒

+1 为 .tslintignore 或添加一个选项以忽略 tsconfig.json 中的某些路径
它可能类似于https://github.com/bbatsov/rubocop#including exclude -files

您需要帮助实施它吗?

作为第一遍,我们将很快合并#1006,它添加了一个简单的 CLI --exclude选项。 这能让你走得更远吗? 如果您在tslint之上使用其他工具,那么它可能具有 glob / exclude 支持(grunt / gulp / etc)。 这对tslint.json的支持有多重要?

我不再从 NPM 脚本中调用 tslint,但对于那些这样做的人来说可能很重要,因为 NPM 不提供(而且我相信它永远不会)跨平台 glob 支持。

我认为在tslint.json文件中为您想要或不想 lint 的文件添加选项不是一个好主意。 它似乎不适合那里。 它也与jshint的配置方式不一致。 是的,它们是两种不同的工具,但它们实际上做的事情是一样的。 由于 TS 是 JS 的超集,两者之间应该有一些一致性。 我宁愿有一个.tslintignore文件(就像.jshintignore )来保持 JS 和 TS 之间的一致性。 将其与tsconfig.json分开,因为 linting 未编译。

+1 CLI 选项,这是一个好的开始。

想提一下 #1006 合并并在一个月左右前发布,所以如果您使用的是最新版本的 TSLint CLI,您将有一个exclude标志可供使用。

+1

+1

+1

人们在这里 +1 做什么? 自 v3.6 以来,CLI 中提供了一个--exclude标志,它允许您排除 glob(文件、路径等)。

@adidahiya例如,它对 WebStorm 没有帮助。 没有指定标志的选项。

我知道,这应该是 WebStorm 开发人员的功能请求,但似乎在 ts-lint 方面实现起来非常容易。 默认情况下,这是为其他 linting 库完成的。 那么为什么不这样做呢?

@fyodorvi很酷,我更新了问题标题和描述。 我们可能希望像解析tslint.json .tslintignore文件的路径。

新文件的优缺点与将其设为tslint.json中的新字段?

对于想要将 tslint 与 WebStorm 一起使用的人,有一个解决方法:
您可以在 node_modules 文件夹中放置空的(带有“{}”) tslint.json文件,并在 WS 中启用“搜索 tslint.json”选项。 这将完全重置 node_modules 文件夹的所有 tslint 规则,并且它将对供应商代码保持沉默(或者如果您愿意,可以在此处添加特定规则)

我一直在关注这个线程,以便能够专门使用 vscode 排除文件(因为在名称更改为特定于 .tslintignore 之前)。 我想让其他人知道谁正在尝试将 exclude 与 vscode 集成,这是一个单独的问题,并且最近针对 vscode 的 tslint 排除了 PR

@adidahiya在 tslint.json 中包含目录或文件数组的字段就足够了,当我们已经在项目中定义了配置文件时,我宁愿不用担心另一个文件来控制此业务。

@Karabur你的解决方法对我不起作用,我什至尝试添加一个空的规则对象,我错过了什么吗?

一个文件就够了。 这也符合 tsconfig,json 的工作方式。

$ tslint.json中的exclude选项会很好(只有一个文件可以使用这种方式),这就是 $ tsconfig.jsonglob忽略部分的名称为好吧(是的 tsconfig.json 包含/排除现在支持最新的 TypeScript 中的 glob)

任何人都知道 eslint 是做什么的,因为我相信他们也会遇到这个问题? :玫瑰:

现在, tslint.json无法控制 _what_ 被 linted,它只控制 _how_ 文件被 linted。 事实上,根据您的设置方式,TSLint CLI 实际上可以在同一运行中通过不同的规则对不同的文件进行 lint。

我不反对 $#$ tslint.json $#$ 中的exclude选项,但它最终可能会是一个轻微的范式转变,必须仔细考虑。

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我认为这些选择听起来很完美! 我还没有尝试过alm,但我很快就会尝试一下💻

请停止发布 +1 评论,并在原始问题描述上使用内置的 Github upvoting 功能。 我现在要删除你的 +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,但半年没有采取任何行动。

谢谢你的碰撞。 请注意,链接的 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[] :一个 glob 数组。 任何匹配这些 glob 的文件都不会被 linted。 所有排除模式都与它们在其中指定的配置文件相关。

这对每个人都足够好了吗? .tslintignore还应该做什么?

/cc @am11 , @basarat

@JoshuaKGoldberg ,这是一个很好的开始。 我认为这个线程上的很多人希望.tslintignore文件除了功能之外,它还符合 git、npm、eslint 等已经设定的标准。喜欢这个标准的人,感觉很舒服有了它,并且有点期待它 - 例如,当我创建一个.tslintignore文件时我发现了这个问题,假设它可以工作,并且在它没有工作时感到惊讶(正确或错误)。

唔。 我怀疑这应该如何工作有两个标准。 如果您在一个目录中同时拥有.tslintignorelinterOptions.exclude ,那么该行为是如何工作的?

编辑:哦,TypeScript 也打破了.*ignore的趋势tsconfig.json

eslint 和 stylelint 都支持--ignore-path CLI 标志或ignorePath JS 选项。 为什么tslint没有?
请添加对此的支持! :祈祷:

鉴于 #4534 和linterOptions.exclude解决方法,现在这似乎超出了 TSLint 的范围。 推荐的方法是迁移到typescript-eslint ; 如果您需要从 TSLint linting 中排除一些 TypeScript 文件,请使用linterOptions.exclude 。 关闭此问题以进行内务处理。

如果linterOptions.exclude中有一些阻止程序使迁移变得更加困难,请提交新问题以报告错误!

🤖哔哔! 👉 TSLint 已弃用👈,你应该切换到typescript-eslint ! 🤖

🔒 此问题已被锁定,以防止进一步不必要的讨论。 谢谢! 👋

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

zewa666 picture zewa666  ·  3评论

cateyes99 picture cateyes99  ·  3评论

CSchulz picture CSchulz  ·  3评论

dashmug picture dashmug  ·  3评论

avanderhoorn picture avanderhoorn  ·  3评论