gpt4 book ai didi

javascript - 如何只在我想提交的文件上运行 Prettier?

转载 作者:太空狗 更新时间:2023-10-29 14:26:26 25 4
gpt4 key购买 nike

使用 Husky ,我已经设置了带有预提交 Hook 的 package.json,以便我的 JavaScript 代码使用 Prettier 进行格式化。在每次提交之前:

{
"name": "prettier-demo",
"scripts": {
"precommit": "prettier --write **/*.js && git add ."
},
"devDependencies": {
"husky": "^0.14.3",
"prettier": "^1.8.2"
}
}

这很好用,但是有两个缺点:

  1. 如果我有一个包含数千个 JavaScript 文件的大型项目,我必须等待 Prettier 处理所有文件,即使只有少数文件发生了变化;这可能会花费很长时间,并且在每次提交完成后都会很快让我感到紧张

  2. 有时我只想暂存几个文件用于提交,将其他更改排除在提交之外;因为我在运行 Prettier 之后执行了 git add .,所以我的所有更改都将始终在提交中结束

如何在每次提交之前运行 Prettier 仅在已暂存的文件上,忽略未暂存或未更改的文件?

最佳答案

您可以使用 lint-staged 来做到这一点:

Linting makes more sense when running before committing your code. By doing that you can ensure no errors are going into repository and enforce code style. But running a lint process on a whole project is slow and linting results can be irrelevant. Ultimately you only want to lint files that will be committed.

This project contains a script that will run arbitrary npm and shell tasks with a list of staged files as an argument, filtered by a specified glob pattern.

使用以下命令安装 lint-stagedhusky,这是预提交 Hook 所必需的:

npm install --save-dev lint-staged husky

如下更改您的 package.json:

{
"scripts": {
"precommit": "lint-staged"
},
"lint-staged": {
"*.js": [
"prettier --write",
"git add"
]
}
}

关于javascript - 如何只在我想提交的文件上运行 Prettier?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com