首页 > 其他分享 >Next.js项目中.eslintrc.js的配置

Next.js项目中.eslintrc.js的配置

时间:2024-12-22 10:41:46浏览次数:8  
标签:空行 插件 typescript no eslintrc js next 使用 Next

print 'hello world!'module.exports = {
  // 扩展配置,包含Next.js的核心Web Vitals插件和TypeScript支持插件等
  extends: ['next/core-web-vitals', 'plugin:@typescript-eslint/recommended', 'plugin:import/recommended', 'prettier'],
  rules: {
    // 关闭jsx-a11y插件的alt-text规则,通常用于图像的alt属性检查
    'jsx-a11y/alt-text': 'off',
    // 关闭React插件的display-name规则,检查组件是否有displayName
    'react/display-name': 'off',
    // 关闭React插件的no-children-prop规则,防止使用children属性
    'react/no-children-prop': 'off',
    // 关闭Next.js插件的no-img-element规则,不允许使用img元素
    '@next/next/no-img-element': 'off',
    // 关闭Next.js插件的no-page-custom-font规则,不允许使用自定义字体
    '@next/next/no-page-custom-font': 'off',
    // 强制使用一致的类型导入形式
    '@typescript-eslint/consistent-type-imports': 'error',
    // 关闭TypeScript插件的ban-ts-comment规则,不允许使用ts注释
    '@typescript-eslint/ban-ts-comment': 'off',
    // 关闭TypeScript插件的no-explicit-any规则,不允许使用any类型
    '@typescript-eslint/no-explicit-any': 'off',
    // 强制禁止未使用的变量
    '@typescript-eslint/no-unused-vars': 'error',
    // 关闭TypeScript插件的no-non-null-assertion规则,不允许使用非空断言
    '@typescript-eslint/no-non-null-assertion': 'off',
    // 在注释前后强制使用空行
    'lines-around-comment': [
      'error',
      {
        beforeBlockComment: true, // 在块注释前使用空行
        beforeLineComment: true, // 在行注释前使用空行
        allowBlockStart: true, // 允许在块开始时使用空行
        allowObjectStart: true, // 允许在对象开始时使用空行
        allowArrayStart: true // 允许在数组开始时使用空行
      }
    ],
    // 在特定的语句之间强制使用空行
    'padding-line-between-statements': [
      'error',
      {
        blankLine: 'any', // 在任意export语句之间可以有或没有空行
        prev: 'export',
        next: 'export'
      },
      {
        blankLine: 'always', // 在变量声明和任意语句之间强制使用空行
        prev: ['const', 'let', 'var'],
        next: '*'
      },
      {
        blankLine: 'any', // 在连续的变量声明之间可以有或没有空行
        prev: ['const', 'let', 'var'],
        next: ['const', 'let', 'var']
      },
      {
        blankLine: 'always', // 在任意语句和函数或多行const、多行块之间强制使用空行
        prev: '*',
        next: ['function', 'multiline-const', 'multiline-block-like']
      },
      {
        blankLine: 'always', // 在函数或多行const、多行块和任意语句之间强制使用空行
        prev: ['function', 'multiline-const', 'multiline-block-like'],
        next: '*'
      }
    ],
    // 在return语句之前强制使用空行
    'newline-before-return': 'error',
    // 在导入语句之后强制使用空行
    'import/newline-after-import': [
      'error',
      {
        count: 1
      }
    ],
    // 强制导入的顺序
    'import/order': [
      'error',
      {
        groups: ['builtin', 'external', ['internal', 'parent', 'sibling', 'index'], ['object', 'unknown']],
        pathGroups: [
          {
            pattern: 'react', // 在react导入之前使用空行
            group: 'external',
            position: 'before'
          },
          {
            pattern: 'next/**', // 在next导入之前使用空行
            group: 'external',
            position: 'before'
          },
          {
            pattern: '~/**', // 在自定义路径导入之前使用空行
            group: 'external',
            position: 'before'
          },
          {
            pattern: '@/**', // 在内部导入之前使用空行
            group: 'internal'
          }
        ],
        pathGroupsExcludedImportTypes: ['react', 'type'],
        'newlines-between': 'always-and-inside-groups' // 在分组内和分组之间强制使用空行
      }
    ],
    // 禁用不推荐的类型,并推荐使用更具体的类型
    '@typescript-eslint/ban-types': [
      'error',
      {
        extendDefaults: true,
        types: {
          Function: 'Use a specific function type instead', // 使用具体的函数类型替代
          Object: 'Use object instead', // 使用object代替
          Boolean: 'Use boolean instead', // 使用boolean代替
          Number: 'Use number instead', // 使用number代替
          String: 'Use string instead', // 使用string代替
          Symbol: 'Use symbol instead', // 使用symbol代替
          any: false, // 禁用any类型
          '{}': false // 禁用空对象类型
        }
      }
    ]
  },
  settings: {
    react: {
      version: 'detect' // 自动检测React的版本
    },
    'import/parsers': {
      '@typescript-eslint/parser': ['.ts', '.tsx'] // 使用TypeScript解析器解析.ts和.tsx文件
    },
    'import/resolver': {
      node: {},
      typescript: {
        project: './tsconfig.json' // 使用项目中的tsconfig.json文件进行解析
      }
    }
  },
  overrides: [
    {
      files: ['*.ts', '*.tsx', 'src/iconify-bundle/*'], // 指定文件匹配模式
      rules: {
        '@typescript-eslint/explicit-module-boundary-types': 'off', // 关闭显式模块边界类型检查
        '@typescript-eslint/no-var-requires': 'off' // 关闭不允许使用require语句的规则
      }
    }
  ]
};

标签:空行,插件,typescript,no,eslintrc,js,next,使用,Next
From: https://www.cnblogs.com/sekihin/p/18621888

相关文章

  • js如何做单元测试?步骤是什么?
    在前端开发中,进行JavaScript的单元测试是保证代码质量的重要环节。以下是进行JavaScript单元测试的基本步骤:选择测试框架:首先,你需要选择一个适合的测试框架。目前流行的测试框架有Mocha、Jest、Jasmine等。这些框架提供了丰富的功能和易用的接口,可以满足大部分的测试需求。搭建......
  • 请实现一个jsonp
    JSONP(JSONwithPadding)是一种解决跨域问题的技巧,它利用了<script>标签不受同源策略限制的特性。不过,需要注意的是,JSONP只支持GET请求,并且存在安全风险,因为它允许执行远程服务器上的任意代码。因此,在使用JSONP时需要谨慎,并确保只从可信的源加载数据。下面是一个简单的JSONP实现示......
  • 使用原生js绑定两个onclick事件
    在JavaScript中,你可以通过以下两种方式绑定onclick事件:1.HTML中直接绑定在HTML元素中直接使用onclick属性来绑定事件。这种方法虽然简单,但不推荐用于大型项目,因为它违反了结构与行为分离的原则。<buttonid="btn1"onclick="handleClick1()">点击我1</button><buttonid="btn......
  • 请描述下js中click和onclick的区别?
    在JavaScript和前端开发中,click和onclick两者都与点击事件相关,但它们在使用和上下文中有所区别。以下是它们之间的主要差异:性质与来源:onclick:这是HTML元素的一个属性,用于为元素指定点击事件的处理函数。你可以在HTML标签中直接使用它,例如<buttononclick="myFunction()">C......
  • 使用js写一个数字动态累加的方法
    你可以通过JavaScript的setInterval函数来创建一个数字动态累加的效果。以下是一个简单的示例:functionstartCounting(start=0,increment=1,duration=1000){letcount=start;constcounterElement=document.getElementById('counter');//假设你有一个HT......
  • Pyqt6在lineEdit中输入文件名称并创建或删除JSON文件
    1、创建JSON文件代码importosdefaddModulekeyWordFile(self):if""!=self.lineEdit_module.text():moduleFile=self.lineEdit_module.text()+'.json'else:self.toolLogPrinting('请输入模块名称')returnfile......
  • 爬虫Js逆向 -数据加密板块
    分析步骤:第一步分析是否为混淆JS        判断是否为混淆JS  看调用的堆栈名称是否简洁易懂  下图为非混淆​无混淆的情况下关键字(不可以很泛)   跟栈拦截器responseJSONparse hookdecrypt(本文讲的是非混淆的数据加密跟栈网站: 资讯-精灵数......
  • Python 自动化爬虫 绕过JS逆向 爬取淘宝商品数据
    声明:此篇博客仅用于学习交流使用 任何用于非法用途的均与作者无关需要登陆pc端淘宝账号本案例所使用到的模块及工具:Drissionpage  自动化模块  pipinstaldrissionpageJsontimepandas保存数据模块  网址: 淘宝(taobao.com) 爬取步骤:一.初始化浏览器......
  • node.js基于Web的连锁餐饮智能管理系统程序+论文 可用于毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于餐饮管理系统的研究,现有研究主要以传统餐饮管理系统为主,专门针对连锁餐饮的智能管理系统研究较少。在国内外,传统餐饮管理系统已发展到一定阶段,有诸......
  • node.js毕设基于和vue的直播带货系统后端 论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于直播带货系统的研究,现有研究多集中在其商业运营模式和市场发展趋势方面3。在技术实现层面,虽有部分涉及,但专门针对基于SpringBoot和Vue构建直播带货......