如何无需Angular CLI,直接用TSLint运行Angular CLI Lint?
直接用TSLint实现Angular CLI lint效果的方法
当然可以跳过Angular CLI的ng lint命令,直接用TSLint完成相同的代码检测!你遇到的codelyzer相关错误,大多是因为直接运行TSLint时没有正确加载Angular专属的lint规则配置导致的。下面是具体的解决步骤:
1. 确认依赖配置
首先确保你的项目里已经安装了codelyzer和tslint(Angular项目默认会自带,但如果是手动搭建的可能需要补充安装):
npm install tslint codelyzer --save-dev
2. 检查TSLint配置文件
打开项目根目录的tslint.json,必须确保它继承了codelyzer的规则集,这样TSLint才能识别Angular特有的lint规则(比如组件选择器规范、模板语法检查等)。典型的配置应该包含:
{ "extends": [ "tslint:recommended", "codelyzer" ], "rules": { // 这里可以添加你的自定义规则,比如Angular组件选择器规则 "component-selector": [true, "element", "app", "kebab-case"], "directive-selector": [true, "attribute", "app", "camelCase"], // 其他你需要的codelyzer或TSLint规则... }, "rulesDirectory": [ "node_modules/codelyzer" ] }
注意rulesDirectory字段是用来告诉TSLint去哪里找codelyzer的规则文件,如果你的配置里没有这个字段,可能会导致规则加载失败。
3. 执行正确的TSLint命令
直接运行TSLint时,需要明确指定项目的tsconfig文件、TSLint配置文件,以及要检测的文件范围。正确的命令应该是:
tslint -p ./src/tsconfig.app.json -c ./tslint.json 'src/**/*.ts' 'src/**/*.html'
-p ./src/tsconfig.app.json:指定Angular应用的tsconfig配置,TSLint会根据这个文件识别项目的编译上下文-c ./tslint.json:指定我们的TSLint规则配置文件'src/**/*.ts' 'src/**/*.html':指定要检测的文件范围,包含所有TS文件和Angular模板文件(codelyzer也支持模板lint)
为什么之前的命令会出错?
你之前尝试的命令没有指定具体的文件范围,TSLint可能没有扫描到所有需要检测的文件;另外如果tslint.json没有正确继承codelyzer规则,就会出现CLI相关的错误——毕竟ng lint底层就是调用TSLint,只不过它自动帮你处理了规则加载和文件范围的配置。
只要按照上面的步骤配置好,直接运行TSLint就能得到和ng lint完全一致的检测结果啦!
内容的提问来源于stack exchange,提问作者Charlie
相关产品推荐
相关产品推荐

