如何使用 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 更新错误“找不到模块 'tslint/lib/lint'”