使用 Husky ,我设置了我的 package.json
带有预提交挂钩,以便在每次提交之前使用 Prettier 格式化我的 JavaScript 代码:
{
"name": "prettier-demo",
"scripts": {
"precommit": "prettier --write **/*.js && git add ."
},
"devDependencies": {
"husky": "^0.14.3",
"prettier": "^1.8.2"
}
}
这工作正常,但有两个缺点:
如果我有一个包含数千个 JavaScript 文件的大型项目,我必须等待 Prettier 处理所有文件,即使只有少数文件发生了变化;这可能会花费很长时间,并且在每次提交完成后都会很快让我感到紧张
有时我只想暂存几个文件用于提交,而将其他更改排除在提交之外;因为我做了
git add .
在运行 Prettier 之后,我所有的更改将始终在提交中结束
如何在每次提交之前 仅对已暂存的文件 运行 Prettier,而忽略未暂存或未更改的文件?
原文由 Patrick Hund 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 lint-staged 来做到这一点:
使用以下命令安装预提交挂钩所需的 lint-staged 和 husky :
改变你的 package.json 如下: