如何运行@angular-eslint/schematics:convert-tslint-to-eslint

Posted

技术标签:

【中文标题】如何运行@angular-eslint/schematics:convert-tslint-to-eslint【英文标题】:How to run @angular-eslint/schematics:convert-tslint-to-eslint 【发布时间】:2021-07-13 19:55:37 【问题描述】:

我正在尝试按照angular-eslint Github repo 中的说明将 Angular 项目从 TSLint 切换到 ESLint。

我运行了ng add @angular-eslint/schematics,它在我的 package.json 中添加了以下依赖项:

    "@angular-eslint/builder": "1.2.0",
    "@angular-eslint/eslint-plugin": "1.2.0",
    "@angular-eslint/eslint-plugin-template": "1.2.0",
    "@angular-eslint/schematics": "1.2.0",
    "@angular-eslint/template-parser": "1.2.0",
    "@typescript-eslint/eslint-plugin": "4.3.0",
    "@typescript-eslint/parser": "4.3.0",
    "eslint": "7.6.0",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-jsdoc": "30.7.6",
    "eslint-plugin-prefer-arrow": "1.2.2",

另外,运行npm install 以确保这些都已安装。

现在我被指示运行:

ng g @angular-eslint/schematics:convert-tslint-to-eslint --remove-tslint-if-no-more-tslint-targets --ignore-existing-tslint-config

但是,这会导致错误:

Unknown option: '--remove-tslint-if-no-more-tslint-targets'
Unknown option: '--ignore-existing-tslint-config'

当我删除这些选项时,我收到另一个错误:

Invalid rule result: Instance of class Promise.

这个 angular-eslint 示意图似乎没有正确安装。但是,对于这些原理图,我完全是新手。我一定在这里遗漏了一些明显的东西。

使用@angular/cli 10.2.3。

【问题讨论】:

【参考方案1】:

这取决于项目的 Angular 版本,因为它为不同的 Angular 版本安装不同版本的 @angular-eslint/schematics

步骤将是:

A.将@angular-eslint 添加到您的项目中:

ng add @angular-eslint/schematics

如果你有一个 Angular 12 项目(没有 tslint),你就完成了!

B.要从 tslint Angular 11 或 12 迁移,请运行以下命令:

ng g @angular-eslint/schematics:convert-tslint-to-eslint --remove-tslint-if-no-more-tslint-targets

(仅当您想忽略旧的 tslint 配置时才使用:--ignore-existing-tslint-config 标志)

如果您使用的是 Angular 9 或 10,则会安装旧版本的原理图,并且转换命令会略有不同。在转换为 ESLint 之前,您可能希望优先升级 Angular。但是如果你真的想先升级 linting,使用这个命令:

ng g @angular-eslint/schematics:convert-tslint-to-eslint <project-name-here>

Detailed blog for tslint to eslint migration

【讨论】:

谢谢,这正是我所需要的:“如果你有一个 Angular 12 项目,你就完成了!” - 无需运行转换【参考方案2】:

如果 CLI 询问您时您不知道项目的名称是什么

Which project would you like to convert from TSLint to ESLint?

可以在projects属性下的angular.json中找到(通常在第8行)

【讨论】:

【参考方案3】:

如果您要迁移现有项目,那么您应该运行其中一个

ng g @angular-eslint/schematics:convert-tslint-to-eslint

ng g @angular-eslint/schematics:convert-tslint-to-eslint YOUR_PROJECT_NAME_GOES_HERE

而不是

ng g @angular-eslint/schematics:convert-tslint-to-eslint --remove-tslint-if-no-more-tslint-targets --ignore-existing-tslint-config

根据指导方针https://github.com/angular-eslint/angular-eslint#step-2---run-the-convert-tslint-to-eslint-schematic-on-a-project

【讨论】:

在这种情况下,我得到Invalid rule result: Instance of class Promise. 错误,正如我已经指出的那样。 你的全局 Angular cli 版本是多少? 本地和全局都是10.2.3 理想情况下它应该可以工作。尽管我的全局 Angular cli 版本是 11.x.x,但我也已迁移到 Angular 版本 10 中的 eslint。尝试将您的全局 cli 版本更新为最新的 cli。 github.com/angular/angular-cli/issues/15290添加以供参考。 没有区别。除了我还收到有关 angular-cli 的本地版本和全局版本之间不匹配的警告。【参考方案4】:

尝试运行以下命令,看看是否有效:

npm install @schematics/angular@latest -g  
remove node_modules 
remove package-lock.json    
npm install

【讨论】:

以上是关于如何运行@angular-eslint/schematics:convert-tslint-to-eslint的主要内容,如果未能解决你的问题,请参考以下文章

程序运行原理:程序是如何运行又是如何崩溃的?

程序运行原理:程序是如何运行又是如何崩溃的?

程序运行原理:程序是如何运行又是如何崩溃的?

程序运行原理:程序是如何运行又是如何崩溃的?

汇编程序运行后,如何查看运行结果

如何让VBS文件 自动开机就运行