首页 > 其他分享 >Nuxt3+ESlint扁平化配置

Nuxt3+ESlint扁平化配置

时间:2024-04-16 11:11:28浏览次数:30  
标签:... 扁平化 Nuxt3 配置 globals eslint ESLint import ESlint

总结一下 Nuxt3 + ESlint 扁平化配置

2024/4/16

前段时间在 Nuxt3 项目中使用 ESLint 时,发现 ESLint 更新了 9.0.0 版本,使用扁平化配置,在集成过程中遇到了些许问题,特此记录一下(在网上了解到扁平化配置早在 ESLint v9.0.0 前就提出来了)。

关于 ESLint v9.0.0 迁移指南:

从 ESLint v9.0.0 开始,扁平配置文件格式将成为默认配置文件格式。ESLint v9.0.0 发布后,你可以开始使用扁平配置文件格式,无需任何额外配置。(关于扁平化配置

要将扁平配置与 ESLint v8 结合使用,请将 eslint.config.js 文件放置在项目的根目录中或将 ESLINT_USE_FLAT_CONFIG 环境变量设置为 true。

开始配置

1.创建一个 Nuxt3 项目

具体创建步骤见官方文档吧,此处略过。

2.安装 ESLint 相关依赖

npm init @eslint/config

以上命令可通过选择配置进行 ESLint 相关依赖安装:

√ How would you like to use ESLint? · problems
√ What type of modules does your project use? · esm
√ Which framework does your project use? · vue
√ Does your project use TypeScript? · typescript
√ Where does your code run? · browser, node
The config that you've selected requires the following dependencies:

eslint, globals, @eslint/js, typescript-eslint, eslint-plugin-vue
√ Would you like to install them now? · No / Yes
√ Which package manager do you want to use? · npm

于是,package.json 文件中的依赖:

"devDependencies": {
    "@eslint/js": "^9.0.0",
    "eslint": "^8.57.0",
    "eslint-plugin-vue": "^9.25.0",
    "globals": "^15.0.0",
    "typescript-eslint": "^7.7.0"
  }

此时,ESLint 还是 v8.57.0 ,也适用扁平化配置的(在使用最新版本时,也是要考虑其他插件是否有跟上,不要一味最求最新版本)

同时也生成了 esllint.config.js 文件:

import globals from "globals";
import pluginJs from "@eslint/js";
import tseslint from "typescript-eslint";
import pluginVue from "eslint-plugin-vue";


export default [
  {languageOptions: { globals: {...globals.browser, ...globals.node} }},
  pluginJs.configs.recommended,
  ...tseslint.configs.recommended,
  ...pluginVue.configs["flat/essential"],
];

3. 考虑到是 Nuxt3 项目,多加一个 @nuxt/eslint

安装及配置 @nuxt/eslint 详见官方文档吧

再说一嘴,我将默认配置关掉了(具体为什么我忘记了,TODO 记起来再补充吧):

// nuxt.config.js

modules: ["@nuxt/eslint"],
eslint: {
  config: {
    standalone: false // 关闭默认配置(默认情况下,此模块会使用推荐的规则安装 JS、TS 和 Vue 插件)
  }
}

至此,ESLint 基本配置完成啦,但是还有要修改及配置的,继续往下吧。

4.配置 eslint.config.js

以下是我的配置:

import withNuxt from "./.nuxt/eslint.config.mjs"
import globals from "globals"
import pluginJs from "@eslint/js"
import tseslint from "typescript-eslint"
import pluginVue from "eslint-plugin-vue"

export default withNuxt(
  [
    {
      languageOptions: {
        globals: { ...globals.browser, ...globals.node, ...globals.es2021 },
        ecmaVersion: "latest",
        parser: tseslint.parser
      }
    },
    pluginJs.configs.recommended,
    ...tseslint.configs.recommended,
    ...pluginVue.configs["flat/recommended"], // Vue3
    {
      rules: {
        // 写上规范代码的规则,具体规则参考 ESLint 官方文档啦
      }
    },
    { ignores: [".nuxt/"] } // 忽略校验 .nuxt/ 目录下的所有文件
  ]

)

与默认生成的配置文件相比:

  • 使用 withNuxt()
  • languageOptions.globals 多加环境: globals.es2021
  • languageOptions 多加属性: ecmaVersion: "latest", parser: tseslint.parser
  • 把 pluginVue.configs["flat/essential"] 改成了pluginVue.configs["flat/recommended"]

具体为什么会有这些变化,就不展开说啦,去百度吧

标签:...,扁平化,Nuxt3,配置,globals,eslint,ESLint,import,ESlint
From: https://www.cnblogs.com/4shana/p/18137683

相关文章

  • ESLint
    一个检测代码风格的工具debugger,使用代码的方式打断点规则报错可以去eslint官网查看以参照修改插件:eslint配置:在setting.json内输入//ESLint插件配置"editor.codeActionsOnSave":{"source.fixAll":true,},插件:Prettier配置:在setting.json内输入//prettier、esli......
  • 前端【VUE】09-vue【Eslint】
    一、ESLint在vscode插件中搜索ESLint,https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint 什么是ESLint官方概念:ESLint是可组装的JavaScript和JSX检查工具。通俗理解:一个工具,用来约束团队成员的代码风格。当通过@vue......
  • quotes: ["error", "single"], eslint的这个规则是什么意思
    quotes:["error","single"]是ESLint规则配置的一部分,用于指定字符串字面量的引号使用规范。具体解释如下:quotes:这是ESLint的规则名称,表示要对代码中的字符串引号使用进行检查。["error","single"]:这是对quotes规则的具体配置,由两个元素组成:"error":第一个......
  • Vue3 + TypeScript + Vite 初始项目搭建(ESLint、Prettier、Sass、Stylelint、husky、p
    仓库地址仓库地址:https://gitee.com/tongchaowei/vue-ts-vite-template项目源码下载:https://gitee.com/tongchaowei/vue-ts-vite-template/releases全局安装pnpm包管理工具执行如下命令在系统全局安装pnpm包管理工具:npmipnpm-g使用Vite脚手架创建Vue3......
  • Nuxt3-自定义路由配置以及使用自定义布局layout
    一、不自定义路由下,如何使用自定义布局1、根目录下app.vue<template><div><NuxtLayout><NuxtPage/></NuxtLayout></div></template>2、layout文件夹下新建文件main.vue<template><divclass="_app">......
  • 禁用某行eslint校验
    要在代码中禁用ESLint规则,可以使用特殊的注释语法。在需要禁用规则的行前添加以下注释://eslint-disable-next-line[rule-name]这行代码会禁用紧跟其后的下一行的指定规则。如果你想禁用当前行以及后面的多行,可以使用:/*eslint-disable[rule-name]*/这个块注释会禁用它们之......
  • nuxt3 useFetch 刷新或首次进入报错
    从其他页面跳转过来正常,但是刷新会报错<scriptlang="ts"setup>constpositionOption=ref([]);constinitData=()=>{useFetch('/api/getTagsByKey',{query:{tagKey:'position'......
  • .eslintignore中的**/_* 这个匹配到的是什么
    .eslintignore文件中的**/_*是一个glob模式,用于指定ESLint应该忽略哪些文件或目录。具体解释如下:**:表示任意层级的子目录。它会递归地匹配当前目录及其所有子目录下的文件和目录。/:在glob模式中,斜线/用于分隔目录层级。_*:表示以_符号开头的任何字符序列。这......
  • 【Nuxt3】使用内置方法获取网络数据和使用场景
    简言记录下如何使用useFetch和$fetch的使用方法和它们的使用场景。获取数据nuxt3内置了很多方法来获取网络数据。这些方法有:useAsyncData—useAsyncData可以访问以SSR友好的可组合方式异步解析的数据。useFetch—使用SSR友好型可组合程序从API端点获取数据......
  • nuxt3_配置环境变量
    配置.env文件在根目录下添加不同的环境文件.env.devNUXT_PUBLIC_API_BASE=http://192.168.110.209:8000NUXT_API_KEY=my-api-key-devNUXT_TEST_VARIABLE=devNUXT_TEST_TEST_VARIABLE=ZZYYNUXT_ENVIRONMENT=development.env.localNUXT_PUBLIC_API_BASE=http:......