Skip to content

lint-staged

lint-staged 是被广泛采用的 Git 工具,针对暂存的 git 文件执行命令,避免错误代码进入代码库。

安装

首先你需要安装 lint-staged。目前支持 lint-staged v15。

shell
npm install lint-staged -D
shell
yarn add lint-staged -D
shell
pnpm install lint-staged -D

配置

在项目根目录下创建 lint-staged.config.mjs

javascript
// lint-staged.config.mjs
import { lintStaged } from "@modyqyw/fabric/lint-staged";

export default lintStaged();

自定义

参数自定义

给导出的 lintStaged 方法传参可以自定义配置,lintStaged 方法接收两个参数。

第一个参数用于基本自定义,你可以不传递或传递空对象表示使用默认值。要明确地启用或禁用某一个插件,需要明确在传递的对象中设置 boolean 值。

以下是默认配置:

javascript
// lint-staged.config.mjs
import {
  hasBiome,
  hasESLint,
  hasMarkdownlintCli,
  hasOxlint,
  hasPrettier,
  hasStylelint,
} from "@modyqyw/fabric";
import { lintStaged } from "@modyqyw/fabric/lint-staged";

export default lintStaged({
  // 使用 Biome 检查
  // 安装 Biome 后默认启用,否则默认禁用
  biome: hasBiome,
  // 使用 ESLint 检查脚本文件
  // 安装 ESLint 且没有启用 Biome 时默认启用,否则默认禁用
  eslint: hasESLint && !hasBiome,
  // 在启用 ESLint 的情况下,使用 ESLint 检查 JSON 文件
  // 默认启用
  lintJsonc: true,
  // 在启用 ESLint 的情况下,使用 ESLint 检查 TOML 文件
  // 默认启用
  lintToml: true,
  // 在启用 ESLint 的情况下,使用 ESLint 检查 YML 文件
  // 默认启用
  lintYml: true,
  // 使用 markdownlint-cli 检查 markdown 文件
  // 安装 markdownlint-cli 后默认启用,否则默认禁用
  markdownlint: hasMarkdownlintCli,
  // 使用 oxlint 检查脚本文件
  // 安装 oxlint 且没有启用 Biome 时默认启用,否则默认禁用
  oxlint: hasOxlint && !hasBiome,
  // 使用 Prettier 格式化代码
  // 安装 Prettier 且没有启用 Biome 时默认启用,否则默认禁用
  prettier: hasPrettier && !hasBiome,
  // 在启用 Prettier 的情况下,使用 Prettier 格式化 CHANGELOG.md 文件
  // 默认禁用
  formatChangelog: false,
  // 使用 Stylelint 检查样式文件
  // 安装 Stylelint 且没有启用 Biome 时默认启用,否则默认禁用
  stylelint: hasStylelint && !hasBiome,
});

第二个参数用于更进一步的自定义,你可以传递一个对象,用于覆盖生成的配置。

javascript
// lint-staged.config.mjs
import { lintStaged } from "@modyqyw/fabric/lint-staged";

export default lintStaged(
  {},
  {
    // 需要自定义的操作
  },
);

FAQ

整合 simple-git-hooks?

如果你使用该库提供的 simple-git-hooks 配置,请查看 simple-git-hooks 章节

如果你没有使用该库提供的 simple-git-hooks 配置,可以参考以下配置。

javascript
// simple-git-hooks.cjs
module.exports = {
  "pre-commit": "npx lint-staged",
};

Released under the MIT License.