• 亮色
  • 深色
  • 自动
  • RSS 订阅

    配置 Next.js 项目

    2025-03-16

    ESLint & Prettier

    安装 eslint-config-prettier 来禁用 eslint 中与 prettier 冲突的规则:

    pnpm i -D eslint-config-prettier
    

    然后编辑 eslint.config.[js|mjs]

    import { dirname } from 'node:path'
    import { fileURLToPath } from 'node:url'
    import { FlatCompat } from '@eslint/eslintrc'
    
    const __filename = fileURLToPath(import.meta.url)
    const __dirname = dirname(__filename)
    
    const compat = new FlatCompat({
      baseDirectory: __dirname,
    })
    
    const eslintConfig = [
      ...compat.extends('next/core-web-vitals', 'next/typescript', 'prettier'),
    ]
    
    export default eslintConfig
    

    安装 prettier,来格式化代码:

    pnpm i -D prettier
    

    如果项目使用了 tailwindcss,那么可以安装 prettier-plugin-tailwindcss 来格式化代码中的 tailwindcss 样式:

    pnpm i -D prettier-plugin-tailwindcss
    

    然后在 prettier 的配置文件,如果没有,可以创建 prettier.config.[js|mjs] 填入如下内容:

    /**
     * @see https://prettier.io/docs/configuration
     * @type {import("prettier").Config}
     */
    const config = {
      plugins: ['prettier-plugin-tailwindcss'],
    }
    
    export default config
    

    Husky(git hooks)

    安装 husky:

    pnpm i -D husky
    

    然后初始化 git hooks:

    pnpm exec husky init
    

    可以在多出的 .husky 目录下的 pre-commit 输入执行 git commit 之前要执行的命令。

    lint-staged

    lint-staged 搭配 husky 可以在 git commit 前自动对此次 commit 的文件执行一些操作,例如格式化 (prettier) 和代码风格 (eslint) 检查。

    安装 lint-staged:

    pnpm i -D lint-staged
    

    然后创建 .lintstagedrc.json 文件:

    {
      "!(public)/**/*": [
        "next lint --fix --file",
        "prettier --write --ignore-unknown"
      ]
    }
    

    因为 public 目录通常是用来存放外部下载的文件,如果其中有些 js 文件,那可能会进行没必要的格式化和代码检查。

    然后到 .husky/pre-commit 里添加命令:

    pnpm lint-staged