nextjs16配置eslint+prettier

  • ESLint + Prettier 配合
    • ESLint 负责"代码正确性和潜在错误"
    • Prettier 负责"代码格式化"
    • 避免 ESLint 因格式化问题报错,可以通过 eslint-config-prettiereslint-plugin-prettier 配合
  • Next.js 官方推荐
    • Next.js 默认生成的模板就支持 ESLint
    • 可以通过 --eslint--tailwind 等选项快速生成
    • 保持代码质量和团队统一风格

一、首先创建一个nextjs项目

javascript 复制代码
pnpm create next-app@latest nextjs-template --yes --src-dir

这里两个参数的作用分别是:

  • --yes:--yes 使用保存的偏好设置或默认值来跳过提示。默认设置启用 TypeScript、Tailwind CSS、ESLint、App Router 和 Turbopack,包含导入别名 @/*,并包括 AGENTS.md(其中引用了 CLAUDE.md)以指导编码代理编写最新的 Next.js 代码。
  • --src-dir:强制将应用代码放到 src/ 目录下

创建完成后目录类似:

javascript 复制代码
my-app/
├─ src/
│  ├─ app/
│  │  ├─ layout.tsx
│  │  ├─ page.tsx
│  │  └─ globals.css
│  └─ ...
├─ public/
├─ package.json
├─ next.config.ts
└─ tsconfig.json

当然你也可以不加--src-dir,不加--src-dir生成的是无src目录工程,目前nextjs默认生成的就是无src目录工程。这个根据个人需求和喜好去选择。

二、安装prettier相关依赖

javascript 复制代码
pnpm add prettier eslint-config-prettier eslint-plugin-prettier -D

创建.prettierrc文件在根目录下,内容有

javascript 复制代码
{
  "importOrder": [
    "^(react/(.*)$)|^(react$)",
    "^(next/(.*)$)|^(next$)",
    "<THIRD_PARTY_MODULES>",
    "",
    "^@/(.*)$",
    "^[./]"
  ],
  "importOrderParserPlugins": ["typescript", "jsx", "decorators-legacy"],
  "plugins": [
    "@ianvs/prettier-plugin-sort-imports",
    "prettier-plugin-sort-json"
  ],
  "printWidth": 80,
  "semi": true,
  "singleAttributePerLine": true,
  "singleQuote": true,
  "tabWidth": 2,

  "trailingComma": "es5"
}

这个prettier配置文件里面引用了这两个依赖@ianvs/prettier-plugin-sort-imports、prettier-plugin-sort-json,因此得去安装:

javascript 复制代码
pnpm add @ianvs/prettier-plugin-sort-imports prettier-plugin-sort-json eslint-plugin-unused-imports -D

三、修改或创建eslint配置文件

javascript 复制代码
import nextVitals from 'eslint-config-next/core-web-vitals';
import nextTs from 'eslint-config-next/typescript';
import prettierConfig from 'eslint-config-prettier';
import prettierPlugin from 'eslint-plugin-prettier';
import unusedImports from 'eslint-plugin-unused-imports';
import { defineConfig, globalIgnores } from 'eslint/config';

const eslintConfig = defineConfig([
  ...nextVitals,
  ...nextTs,

  globalIgnores(['.next/**', 'out/**', 'build/**', 'next-env.d.ts']),
  prettierConfig,
  {
    plugins: {
      prettier: prettierPlugin,
      'unused-imports': unusedImports,
    },
    rules: {
      '@typescript-eslint/no-unused-vars': 'off',
      'no-unused-vars': 'off',
      'unused-imports/no-unused-imports': 'error',
      'unused-imports/no-unused-vars': [
        'warn',
        {
          vars: 'all',
          varsIgnorePattern: '^_',
          args: 'after-used',
          argsIgnorePattern: '^_',
        },
      ],
      'prettier/prettier': 'error',
    },
  },
]);

export default eslintConfig;

四、修改package.json命令行

javascript 复制代码
"scripts": {
  "lint": "eslint .",
  "format": "prettier --write ."
}

以上步骤就完成了nextjs的eslint、prettier配置

第五步:编辑器集成(VS Code 党必看)

在 VS Code 或者cursor中安装插件:

  • ESLint ✔️
  • Prettier - Code formatter ✔️

然后再vscode或者cursor的setting.json 当中配置如下:

复制代码
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode"
}

当然了你也可以在nextjs项目下面创建,到 .vscode/settings.json,进行以上配置

相关推荐
胡萝卜术16 小时前
从API调用到手写LRU:力扣146「LRU缓存」的哈希表+双向链表终极进化之路
前端·javascript·面试
科技道人16 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
天疆说16 小时前
Zotero Connector 在 Edge 里找不到桌面 Zotero(Linux / Zotero 9.0.6 / Edge 150)
linux·前端·edge
李伟_Li慢慢17 小时前
02-从硬件说起WebGL
前端·three.js
kyriewen18 小时前
看了微软几万人用AI编程的数据——效率涨24%的代价没人提
前端·ai编程·claude
2601_9637713718 小时前
How to Scale Your WordPress Store Traffic in 2026
前端·php·plugin
亿元程序员19 小时前
老板说我的3D箭头游戏用来做试玩太普通了,没人想玩,让我变点花样...
前端
李伟_Li慢慢19 小时前
01-threejs架构原理-课程简介
前端·three.js
_瑞21 小时前
深入理解 iOS 渲染原理
前端·ios
IT_陈寒21 小时前
SpringBoot自动配置失灵?你可能忘了这个关键注解
前端·人工智能·后端