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
shell
bun install lint-staged -d
配置
ESM
javascript
// lint-staged.config.mjs
// or lint-staged.config.js with "type": "module" in package.json
import { lintStaged } from '@modyqyw/fabric';
// or
// import { lintStaged } from '@modyqyw/fabric/lint-staged';
export default lintStaged();
CJS
javascript
// lint-staged.config.cjs
// or lint-staged.config.js without "type": "module" in package.json
const { lintStaged } = require('@modyqyw/fabric');
// or
// const { lintStaged } = require('@modyqyw/fabric/lint-staged');
module.exports = lintStaged();
自定义
参数自定义
给导出的 lintStaged
方法传参可以自定义配置,lintStaged
方法接收两个参数。
第一个参数用于基本自定义,你可以传递 undefined
或对象。要明确地启用或禁用某一个配置,需要明确在传递的对象中设置 boolean 值。
目前支持以下配置:
- eslint:使用 ESLint 检查脚本文件,安装 ESLint 后默认启用,否则默认禁用
- lintJsonc:在启用 ESLint 的情况下,使用 ESLint 检查 JSON 文件,默认启用
- lintYml:在启用 ESLint 的情况下,使用 ESLint 检查 YML 文件,默认启用
- oxlint:使用 oxlint 检查脚本文件,安装 oxlint 后默认启用,否则默认禁用
- stylelint:使用 Stylelint 检查样式文件,安装 Stylelint 后默认启用,否则默认禁用
- markdownlint:使用 markdownlint 检查 markdown 文件,安装 markdownlint-cli 后默认启用,否则默认禁用
- prettier:使用 Prettier 格式化代码,安装 Prettier 后默认启用,否则默认禁用
- formatChangelog:在启用 Prettier 的情况下,使用 Prettier 格式化 CHANGELOG.md 文件,默认禁用
javascript
// lint-staged.config.mjs
// or lint-staged.config.js with "type": "module" in package.json
import {
hasESLint,
hasMarkdownlintCli,
hasOxlint,
hasPrettier,
hasStylelint,
lintStaged,
} from '@modyqyw/fabric';
export default lintStaged({
eslint: hasESLint,
formatChangelog: false,
lintJsonc: true,
lintYml: true,
markdownlint: hasMarkdownlintCli,
oxlint: hasOxlint,
prettier: hasPrettier,
stylelint: hasStylelint,
});
第二个参数用于更进一步的自定义,你可以传递一个对象,用于覆盖生成的配置。
javascript
// lint-staged.config.mjs
// or lint-staged.config.js with "type": "module" in package.json
import { lintStaged } from '@modyqyw/fabric';
export default lintStaged(undefined, {
// 需要自定义的操作
});
整合
simple-git-hooks
如果你使用该库提供的 simple-git-hooks 配置,请查看 simple-git-hooks 章节。
如果你没有使用该库提供的 simple-git-hooks 配置,可以参考以下配置。
javascript
// simple-git-hooks.cjs
module.exports = {
'pre-commit': 'npx lint-staged',
};