首页 > 解决方案 > Prettier 使用 pre-commit(.com) 不会重新进行更改

问题描述

我开始使用 Prettier + eslint 使用pretty-quick& husky选项 2)。它的行为符合预期,即在提交(或修改)期间重新格式化代码并在提交中包含更改。

我的 monorepo 需要(几个)更多的预提交钩子,所以我最终迁移到了pre-commit.com(选项 3)。现在,当我提交或修改时,Prettier 会修改文件并返回Failed状态。这造成了一个相当烦人的工作流程,我被迫添加文件并尝试再次提交更改。

作为提交的一部分,是否有某种方法可以将更改重新分阶段?

标签: prettierpre-commit-hookpre-commitpre-commit.com

解决方案


pre-commit 故意从不涉及暂存区域。默默地改变正在提交的内容是危险的。该工具总是让您有机会在提交之前验证钩子的作用

您可以在问题跟踪器中阅读更多相关信息:

如果您想立即启动,我的建议是git add -u && !!之后立即运行——这将暂存更改的文件并重新运行您刚刚运行的命令

如果您想冒险进入不受支持的领域,您可以将其作为命令的一部分运行(如其中一个问题所示)——但这巧妙地破坏了该工具的许多保证

  - id: yapf
    entry: bash -c 'yapf "$@"; git add -u' --

免责声明:我是 pre-commit 的作者


推荐阅读