VSCode:git登台时触发OrganizeImports

Nor*_*ldt 7 javascript git jsx githooks visual-studio-code

我喜欢VSCode中的自动整理功能,但是每次保存时都使用它会给我带来一些麻烦。

...
"editor.codeActionsOnSave": {
    "source.organizeImports": true
  },
...
Run Code Online (Sandbox Code Playgroud)

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

问题

如果在我使用导入的方法之前过早地单击保存(这样做总是使它更漂亮),那么它将删除它,因此我必须再次编写导入。

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

LeG*_*GEC 2

运行时可以应用某种形式的钩子git addgitconfig和中定义的过滤器.gitattributes

详细解释请参阅git book 的这一部分。


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

  • 运行时git add

添加文件时应用“干净”过滤器

  • 运行时git checkout

添加文件时应用“涂抹”过滤器

您可以在过滤器中定义gitconfig,其中包含两个命令“clean”和“smudge”:

$ git config --global filter.jsximports.clean fiximports
$ git config --global filter.jsximports.smudge cat
Run Code Online (Sandbox Code Playgroud)

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

*.jsx    filter=jsximports
Run Code Online (Sandbox Code Playgroud)

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

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

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