Vue(或其他文件)在vscode中的格式问题

Vue总有一项令我不爽的一点,那就是,不管他的默认格式化工具是现在的Volar也好,还是以前的Vuter也罢,总会和我的Eslint配置文件冲突。

索性我就将默认的vue格式化工具交给Eslint,如下:

// settings.json
...
"[vue]": {
        "editor.defaultFormatter": "dbaeumer.vscode-eslint",
        "editor.formatOnSave": true,
        "editor.formatOnType": false
    },
...

但是很快我就发现了问题,ESlint能管辖 ts/js, 但是没法管到 less/css 和 html 部分,所以我不得不研究几个方案来解决这个膈应人的问题

方案1: 把 ts/js 代码拆成单独的文件,形如:

// App.vue
<script setup lang="ts" src="/path/to/script.ts"></script>
...

好家伙,人家Vue费劲心思让你模块化你直接给人家拆了,我觉得不行。

方案2: 既然ESlint不能管到这些文件,我直接让他管辖到这部分不就行了?

我的结论是:想法很好,太麻烦了,不弄

方案3: 让Format工具按照顺序执行,先用Volar格式化vue文件,再用ESlint格式化 ts/js 代码块。

我的结论:可接受的方案

使用VScode插件Multiple Formatters,接着去settings.json设置Formatter的顺序, 如下:

// settings.json
...
 "[vue]": {
        // 此行表示将vue的formatter交给 multi-formatter 插件处理
        "editor.defaultFormatter": "Jota0222.multi-formatter",
        // 此处定义处理顺序
        "multiFormatter.formatterList": [
            "Vue.volar",
            "dbaeumer.vscode-eslint"
        ],
        "editor.formatOnSave": true,
        "editor.formatOnType": false
    },
...