首页 > 其他分享 >园子博客后台升级至 angular 19 后 eslint 9 迁移记录

园子博客后台升级至 angular 19 后 eslint 9 迁移记录

时间:2024-12-22 21:21:23浏览次数:3  
标签:19 eslintrc js eslint file config angular

最近在将园子的博客后台从 angular 15 升级至 angular 19,升级基本完成后发现 eslint 不能正常工作。

vscode output panel 出现了 eslint 的警告与报错

(node:8724) ESLintIgnoreWarning: The ".eslintignore" file is no longer supported. Switch to using the "ignores" property in "eslint.
Error: Could not find config file.

网上搜了一下才知道,在升级 angular 19 的过程中更新 npm 包时将 eslint 从 8 升级到了 9,问题是 eslint 9 的 breaking changes 引起的。

eslint 9 采用了新的 flat config,与之前的配置文件不兼容,园子博客后台之前使用的是 .eslintrc.js,但 eslint 9 不认,所以报错 "Could not find config file"。

幸好 eslint 提供了迁移工具,运行下面的命令可以进行迁移

npx @eslint/migrate-config .eslintrc.js

迁移后生成了 eslint.config.mjs 新配置文件,.eslintignore.eslintrc.js 中配置会被迁移过来。

但迁移工具对我们这里使用的 .eslintrc.js 支持不好,迁移命令出现了下面的警告

WARNING: This tool does not yet work great for .eslintrc.(js|cjs|mjs) files.
It will convert the evaluated output of our config file, not the source code.
Please review the output carefully to ensure it is correct.

另外,迁移命令提示需要安装下面的 npm 包

npm install @eslint/compat globals @eslint/js @eslint/eslintrc -D

这时,vscode 中的 eslint 已经可以正常工作了,problems panel 列出了 eslint 发现的错误。

ng lint 报错

(node:10060) ESLintIgnoreWarning: The ".eslintignore" file is no longer supported. Switch to using the "ignores" property in "eslint.config.js"

先删除不需要的 .eslintignore.eslintrc.js 文件

git rm .eslintignore .eslintrc.js

这时 ng lint 的报错变成

An unhandled exception occurred: All files matching the following patterns are ignored:
- 'src/**/*.ts'

Please check your '.eslintignore' file.

上面的问题是 angular.json 中的 lint 配置引起的

"lint": {
  "builder": "@angular-eslint/builder:lint",
  "options": {
    "lintFilePatterns": [
      "src/**/*.ts"
    ]
  }
}

新建一个带 eslint 的 angular 19 项目比较一下

ng new angular-103-eslint --routing
cd angular-103-eslint
ng add @angular-eslint/schematics --skip-confirmation

对比发现迁移生成的 eslint.config.mjs 中少了下面的配置

files: ["**/*.ts"]

添加后 ng lint 命令可以正常执行了。

参考资料:

标签:19,eslintrc,js,eslint,file,config,angular
From: https://www.cnblogs.com/dudu/p/18622271

相关文章

  • [CF1965F] conference
    题意:有\(n\)个讲师,对于讲师\(i\),他可以在\([l_i,r_i]\)中选一天讲课,问对于\(x\in[1,n]\),有多少连续的\(x\)天可以做到都有讲师讲课。先考虑区间的\(l\)互不相同时如何解决。对于已知的\([l,r]\)是否存在完美匹配,判断是简单的,我们贪心地按天数从左往右依次解决,每次......
  • @rushstack/eslint-patch 这个包的作用是什么
    @rushstack/eslint-patch是一个由Microsoft的RushStack团队开发的工具,主要用于修补ESLint在某些特定场景下的行为,特别是在使用TypeScript和其他语言特性时。它的主要作用是解决ESLint与一些现代JavaScript/TypeScript工具链集成时可能遇到的问题,并确保ESLint能够......
  • Averaging Weights Leads to Wider Optima and Better Generalization(SWA2018-2019)平
    第一部分:解决的问题论文解决的是深度神经网络优化过程中模型的泛化能力提升问题。具体来说:背景问题:在深度学习中,SGD(随机梯度下降)及其变种是主要的优化方法,但其找到的解通常在权重空间中是“尖锐(参数稍微变一点损失函数就会变化很大)的”(sharpminima),对模型泛化性能有负面影......
  • 2024-2025-1 20241319 《计算机基础与程序设计》第十三周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13这个作业的目标《C语言程序设计》第12章作业正文https://www.cnblogs.com/wchxx/p/18622144**教材学习内容总结结......
  • 20241219
    混凝土期末报告#导入必要的库importpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltimportseabornassns#数据科学与机器学习库fromsklearn.model_selectionimporttrain_test_split,GridSearchCVfromsklearn.preprocessingimportStandardSc......
  • Next.js项目中.eslintrc.js的配置
    print'helloworld!'module.exports={//扩展配置,包含Next.js的核心WebVitals插件和TypeScript支持插件等extends:['next/core-web-vitals','plugin:@typescript-eslint/recommended','plugin:import/recommended','prettier'......
  • 操作系统(19)文件目录
    前言    操作系统中的文件目录是组织和存储文件的关键组成部分,它使得操作系统能够有效地对文件实施统一管理。一、文件目录的作用    文件目录的主要作用是将文件名转换为文件在外存的物理位置。用户通过文件名来访问文件,而文件目录则提供了文件名与文件物......
  • CMake构建学习笔记19-OpenSSL库的构建
    1.概述OpenSSL是一个开源的加密工具包和库,主要实现了安全套接字层(SSL)和传输层安全(TLS)协议,以及各种加密算法、数字签名、消息摘要、加密证书等功能。这个库可以说是Web开发尤其是HTTPS通信的基石了。这里就具体讲解一下如何构建它。2.构建过程2.1Windows环境首先要说明的是O......
  • [EIS 2019]EzPOP
    [EIS2019]EzPOP[EIS2019]EzPOP-天水麒麟儿-博客园这篇wp我感觉看的最明白,思路很舒服总结这道题目就是在考些php特性代码分析首先拿到源码看到unserialize然后看到两个类,第一反应那就是反序列化了,直接找出口$data="<?php\n//".sprintf('%012d',$expire)."\nexit......
  • //需求//某系统的数字密码(大于0),比如1983,采用加密方式进行传输;//规则如下:先得到每位数
    //需求//某系统的数字密码(大于0),比如1983,采用加密方式进行传输;//规则如下:先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){//1.通过输入......