如何使用 tslint 对整个文件夹进行 lint

Posted

技术标签:

【中文标题】如何使用 tslint 对整个文件夹进行 lint【英文标题】:How to lint entire folder using tslint 【发布时间】:2016-07-26 15:59:09 【问题描述】:

是否可以使用 tslint 对整个文件夹进行 lint?

使用 eslint 可以执行 eslint ./src 来验证整个文件夹。

当我尝试对 tslint 执行相同操作时 - 我收到错误 Error: EISDIR: illegal operation on a directory。在他们在网站上的示例中 - 他们展示了如何验证单个文件,这通常不是这种情况。

是否可以在不使用 gulp-tslint 之类的额外内容的情况下仅通过命令行验证我的项目?

【问题讨论】:

想通了,它可以使用通配符 - tslint src/**/*.ts 感谢您的评论。我想知道究竟如何使用通配符。 【参考方案1】:

如果您的项目有 tsconfig.json,您可以使用 --project advange。

就我而言,我有一个 nativescript 项目,它在项目根目录中包含一个 tsconfig.json,所以我有这个:

请注意,在 json 中,“node_modules”和“platforms”目录被排除在外。 这意味着项目中的所有文件都将被映射,除了 'node_modules' 和 'platforms' 目录。

我已经在我的 package.json 中添加了这个脚本,'tslint' 来记录错误,'tslint-fix' 来修复错误。

"scripts": 
    "tslint": "tslint -p tsconfig.json",
    "tslint-fix": "tslint --fix -p tsconfig.json"

【讨论】:

【参考方案2】:

现在有一个--project 选项。示例:

tslint --project .

来自docs:

-p,--项目:

包含 tsconfig.json 文件的路径或目录 用于确定哪些文件将被 linted。该标志还启用 需要类型检查器的规则。

【讨论】:

这工作:) 谢谢。另一种通配符方法没有找到所有文件。 我不太了解 --project 参数。你知道如何排除文件吗? --project 参数只是告诉它使用 tsconfig.json 文件中的设置。因此,如果要排除文件,则需要在 tsconfig.json 中进行配置。【参考方案3】:

您可以使用 glob 对多个文件进行 lint。

通常,如果您只是按原样传递一个 glob,您的 shell 将扩展它并将生成的文件传递给 TSLint。因此,例如,在启用 globstar 选项的 bash 4+ 中,您可以执行以下操作来 lint 所有 .ts.tsx 文件:

tslint src/**/*.ts,x

尽管使用可以跨平台和外壳一致工作的命令,但您可能会更好。为此,您可以在引号中传递 glob。在引号中时,glob 将按原样传递给 TSLint,TSLint 将使用node-glob 处理它。然后,您可以运行以下命令以获得与上述相同的结果:

tslint 'src/**/*.ts?(x)'

【讨论】:

确实,似乎无引号仅适用于 Windows。谢谢! 所以如果我有一个文件是 src 的直接子文件,这将不起作用。说 src/index.ts,我想这是一个常见的用例 @HaroonKhan 都应该工作。我假设在您的情况下您使用的是 glob 的 bash 版本。你可能did not have the globstar option set。尝试切换到引用版本以利用 node-glob,它还有一个很好的副作用是使您的脚本更加独立于平台 效果很好,但现在在lint-staged 中失败了 :) 一会儿会看看它 有帮助! for those unfamiliar with what a glob is

以上是关于如何使用 tslint 对整个文件夹进行 lint的主要内容,如果未能解决你的问题,请参考以下文章

使用 TSLINT 与 Sonarqube 的区别?

如何在 WebStorm 中保存 TSLint?

如何仅在修改后的文件上运行 tslint

tslint 更新错误“找不到模块 'tslint/lib/lint'”

在 lint 错误上隐藏 tslint-loader 模块跟踪

`Tslint --fix` 不会自动修复,而是会生成 lint 问题作为控制台错误