Skip to content

lint-staged

lint-staged 相当于一个文件过滤器,每次提交时只检查本次提交的暂存区的文件,它不能格式化代码和校验文件, 需要自己配置一下,如:.eslintrc、.stylelintrc 等,然后在 package.json 中引入。

安装依赖:

bash
ni -D lint-staged

新建配置文件 .lintstagedrc.json 并写入如下内容:

json
{
  "*.{css,scss}": "stylelint --fix",
  "*": "prettier --ignore-unknown --write",
  "*.{js,jsx,ts,tsx}": "eslint --fix"
}

或者

json
{
  "src/**/*.tsx": [
    "prettier --write",
    "eslint --fix"
  ],
  "src/**/*.scss": [
    "prettier --write"
  ],
  "src/**/*.mdx": [
    "prettier --write"
  ],
  "src/**/*.md": [
    "prettier --write"
  ]
}

修改 packages.json:

text
"scripts": {
	"ling-staged": "ling-staged",
}

运行 yarn lint-staged 将对 git 暂存区所有文件执行 .lintstagedrc 中配置的命令。

或者在 package.json 中添加 lint-staged 字段:

json
{
  "lint-staged": {
    "*.{css,scss}": "stylelint --fix",
    "*": "prettier --ignore-unknown --write",
    "*.{js,jsx,ts,tsx}": "eslint --fix"
  }
}

package.json中的配置

text
  "lint": "npm run lint:es && npm run lint:css",
    "lint:css": "stylelint \"{src,test}/**/*.{css,less}\"",
    "lint:es": "eslint \"{src,test}/**/*.{js,jsx,ts,tsx}\"",
text
 "commitlint": {
    "extends": [
      "@commitlint/config-conventional"
    ]
  },
  "lint-staged": {
    "*.{md,json}": [
      "prettier --write --no-error-on-unmatched-pattern"
    ],
    "*.{css,less}": [
      "stylelint --fix",
      "prettier --write"
    ],
    "*.{js,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{ts,tsx}": [
      "eslint --fix",
      "prettier --parser=typescript --write"
    ]
  },
text
"eslint": "eslint packages/perfect-design/src --cache --fix --quiet --ext .js,.jsx,.ts,.tsx",
		"pre-commit": "pretty-quick --staged && pnpm eslint && pnpm stylelint",
		"stylelint": "stylelint {packages,.dumi/theme}/**/*.less --fix",
		
		
"gitHooks": {
		"pre-commit": "lint-staged"
	},
	"lint-staged": {
		"*.{js,jsx,less,md,json}": [
			"prettier --write"
		],
		"*.ts?(x)": [
			"prettier --parser=typescript --write"
		]
	},

pretty-quick

作者:Long Mo
字数统计:322 字
阅读时长:1 分钟

Contributors

Long Mo
文章作者:Long Mo
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Longmo Docs