VSCode:在git staging时触发organizeImports

Posted

技术标签:

【中文标题】VSCode:在git staging时触发organizeImports【英文标题】:VSCode: trigger organizeImports when git staging 【发布时间】:2019-10-20 07:49:21 【问题描述】:

我喜欢 VSCode 中的自动组织功能,但每次保存都这样做给我带来了一些麻烦。

...
"editor.codeActionsOnSave": 
    "source.organizeImports": true
  ,
...

当我暂存它们时,是否可以设置一些 git 钩子来组织导入(通过 vscode 或其他脚本/lib)?

问题

如果我在使用导入的方法之前过早地点击保存(这样做是为了一直更漂亮) - 然后它会删除它,我必须重新编写导入。

如果我破坏了代码(.jsx)并且似乎没有使用某些东西并且我点击保存(以触发更漂亮),那么它会删除导入。然后我必须再次导入它们。

【问题讨论】:

【参考方案1】:

运行git add 时可以应用某种形式的钩子:gitconfig.gitattributes 中定义的过滤器。

详情请见this section of git book。


以下是文档中的草图(它说明了如何配置过滤器以在 *.txt 文件上运行):

运行时git add

运行时git checkout

您可以在您的gitconfig 中定义一个过滤器,该过滤器由“清洁”和“涂抹”两个命令组成:

$ git config --global filter.jsximports.clean fiximports
$ git config --global filter.jsximports.smudge cat

并编辑 .gitattributes 文件以将此过滤器应用于 jsx 文件

*.jsx    filter=jsximports

要应用的脚本可能是tslint --fix,带有ordered-imports rule。

实际上:tslint 的规则似乎有自己的实现,但它做了类似的事情(见https://github.com/palantir/tslint/pull/4064)

在这个答案中:https://***.com/a/57458656/86072 用户 thorn 指向这个 npm 包:https://www.npmjs.com/package/organize-imports-cli 从cli调用organizeImports

【讨论】:

非常感谢@LeGEC,这看起来是一条路。你知道fiximports 的工具/脚本吗? @Norfeldt : 呵呵 :) 不。 “organizeImports”代码是打字稿代码库的一部分,但我还没有找到如何从命令行调用它。您可以针对该部分提出问题。 我确实认为我的问题正是关于那部分的 ;-) 授权:***.com/questions/56472989/… 感谢您发布这个?‍♂️?

以上是关于VSCode:在git staging时触发organizeImports的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 脚本作为提交后挂钩、触发 bash 脚本、执行 git-pull?

stage划分算法

git stage hunk 在 git for Windows 上的工作方式不同吗? [复制]

Git关于VSCode 内置Git问题

VS Code 中 Commit、Commit Staged 和 Commit All 的区别

lint-staged:“git add”命令的目的是啥