ESLint+Prettier+Husky+Lint-staged配置

1. 引入 ESLint

ESLint 是 JavaScript 和 TypeScript 项目的标准代码检查工具。

安装 ESLint
npm install eslint --save-dev
配置文件示例

.eslintrc.js 文件的 Vue 项目配置示例:

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: ['plugin:vue/essential', 'eslint:recommended', 'plugin:prettier/recommended'],
  parserOptions: {
    parser: '@babel/eslint-parser',
  },
  rules: {
    // 自定义规则
    'vue/multi-word-component-names': 'off', // vue组件name无需用横杠连接
    'no-unused-vars': ['error', { argsIgnorePattern: '^_' }], // 关闭未使用变量规则
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
  },
}
2. 引入 Prettier

Prettier 是一款代码格式化工具,可以与 ESLint 配合使用。

安装 Prettier
npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev
配置 Prettier

新增 .prettierrc 文件,设置格式化规则:

module.exports = {
  // 一行最多 120 字符
  printWidth: 120,
  // 使用 4 个空格缩进
  tabWidth: 2,
  // 不使用 tab 缩进,而使用空格
  useTabs: false,
  // 行尾需要有分号
  semi: false,
  // 使用单引号代替双引号
  singleQuote: true,
  // 对象的 key 仅在必要时用引号
  quoteProps: 'as-needed',
  // jsx 不使用单引号,而使用双引号
  jsxSingleQuote: false,
  // 末尾使用逗号
  trailingComma: 'all',
  // 大括号内的首尾需要空格 { foo: bar }
  bracketSpacing: true,
  // jsx 标签的反尖括号需要换行
  jsxBracketSameLine: false,
  // 箭头函数,只有一个参数的时候,也需要括号
  arrowParens: 'always',
  // 每个文件格式化的范围是文件的全部内容
  rangeStart: 0,
  rangeEnd: Infinity,
  // 不需要写文件开头的 @prettier
  requirePragma: false,
  // 不需要自动在文件开头插入 @prettier
  insertPragma: false,
  // 使用默认的折行标准
  proseWrap: 'preserve',
  // 根据显示样式决定 html 要不要折行
  htmlWhitespaceSensitivity: 'css',
  // 换行符使用 lf
  endOfLine: 'auto',
  // 强制元素属性换行
  singleAttributePerLine: false,
}
3. 安装和配置 Lint-Staged + Husky

这些工具可以在提交代码前进行自动校验。

安装依赖
npm install lint-staged husky --save-dev
初始化 Husky

运行以下命令,初始化 Husky 并创建 .husky 目录:

npx husky-init
配置 Git 钩子
  1. 添加 pre-commit 钩子
    通过以下命令添加一个 pre-commit 钩子,用于在提交之前运行特定脚本:
    npx husky add .husky/pre-commit "npm test"

    该命令会在.husky目录下生成一个名为pre-commit的文件,内容如下:

    #!/usr/bin/env sh
    . "$(dirname -- "$0")/_/husky.sh"
    
    npx test

    npm test用于集成测试和单元测试

  2. 在 package.json 文件中添加以下内容:

    {
    "husky": {
        "hooks": {
          "pre-commit": "lint-staged"
        }
      },
      "lint-staged": {
        "*.js": "eslint --fix",
        "*.ts": "eslint --fix",
        "*.vue": "eslint --fix",
        "*.json": "prettier --write",
        "*.css": "prettier --write"
      }
    }

      3.将 lint-staged 集成到 pre-commit 钩子中:

npx husky add .husky/pre-commit "npx lint-staged"

注意:在执行上述命令时,终端提示:

husky - add command is DEPRECATED

导致pre-commit文件中并未添加npx lint - staged,故手动添加该内容

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged

### 配置 ESLintPrettier 在 Vue 3 中的最佳实践 #### 初始化 Vue 3 项目并安装依赖包 为了创建一个新的 Vue 3 项目,可以使用 `pnpm` 来执行命令: ```bash pnpm create vue@latest ``` 在交互式提示中可以选择是否配置 Eslint 进行代码质量控制[^1]。 接着,在项目的根目录下运行以下命令来安装必要的开发工具: ```bash npm install -D eslint prettier eslint-plugin-vue eslint-plugin-prettier eslint-config-prettier @vue/eslint-config-typescript ``` 这组插件能够确保 ESLint 能够理解 TypeScript 的语法特性以及 Vue 组件特有的结构,并且通过集成 Prettier 实现自动化的代码格式化处理[^2]。 #### 创建和编辑配置文件 ##### `.eslintrc.js`: ESLint 主要配置文件 此文件定义了整个项目的 ESLint 行为。下面是一个基本的例子: ```javascript module.exports = { root: true, env: { node: true, }, extends: [ 'plugin:vue/vue3-essential', '@vue/typescript/recommended', 'plugin:@typescript-eslint/recommended', 'prettier' ], parserOptions: { ecmaVersion: 2020, }, rules: { // 自定义规则... } }; ``` 上述设置扩展了一些预设好的最佳实践集合,包括针对 Vue 特性的支持、TypeScript 支持以及关闭潜在冲突的默认规则以便让位于 Prettier 处理器。 ##### `.eslintignore`: 排除不需要检查的路径 该文件列出了哪些文件夹或文件不应该被 ESLint 所扫描。通常会包含构建输出文件夹如 `/dist`, 测试覆盖率报告等无关紧要的内容。 ``` /dist/ /node_modules/ *.min.js ``` ##### `.prettierrc.json`: 定义 Prettier 规则 Prettier 使用这个 JSON 文件指定其行为参数,例如缩进宽度、单双引号偏好等等。这里给出一个简单的例子: ```json { "semi": false, "singleQuote": true, "tabWidth": 2, "printWidth": 80, "trailingComma": "all" } ``` 这些选项可以根据团队内部约定调整到最合适的状态。 ##### `.prettierignore`: 类似于 .gitignore 的作用范围 用于声明那些不希望由 Prettier 修改样式的资源位置,比如某些第三方库自带的样式表或者其他不适合自动化修改的部分。 ``` /build/ /dist/ ``` #### 设置 Git Hooks 提交前验证 为了让每次提交都能遵循既定的标准,可以通过 Husky 结合 Lint-Staged 工具实现钩子功能。先安装这两个软件包作为 devDependencies : ```bash npx mrm lint-staged ``` 之后会在 package.json 中自动生成相应的脚本部分,类似于这样: ```json "scripts": { ... }, "lint-staged": { "*.{js,vue}": ["eslint --fix", "prettier --write"] }, "husky": { "hooks": { "pre-commit": "lint-staged" } } ``` 现在每当有新的更改准备推送到仓库之前都会触发一次静态分析过程,从而保证入库代码的质量始终处于较高水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值