У меня есть файл .vue, который автоматически форматируется при его сохранении. Это здорово и все такое, но у меня есть определенная проблема, которую я не могу понять, и не могу избавиться.
Следуя этому руководству, https://blog.jongallant.com/2019/02/vuejs-vetur-vscode-format-eslint-issues/, я настроил код VS для использования Vetur, beautify-js и ESLint.
В файле .vue у меня есть простой массив. Когда я сохраняю файл, он мигает в течение 100 мс примерно так:
и затем сохраняется следующим образом:
Затем ESLint жалуется на две вещи:
'Ожидается отступ в 8 пробелов, но найдено 0.eslint (indent)'
и
'Конечные пробелы не допускаются. Eslint (без-конечных пробелов)'
Я согласен с ESLint здесь и не хочу подавлять эти ошибки. Любое другое форматирование хорошо, но JS не массивы. Я считаю, что это js-beautify, который форматирует документ следующим образом (отсюда и связанная статья :)), но когда я отключаю его, документ все равно форматируется. Но если я установлю для autofix значение false в vue-части eslint.validate (см. Ниже), документ не будет отформатирован. Так что я здесь немного запутался.
Это мои настройки. Json
{
"explorer.confirmDragAndDrop": false,
"vetur.validation.template": false,
"editor.formatOnSave": true,
"eslint.validate": [
{
"language": "vue",
"autoFix": true
},
{
"language": "html",
"autoFix": true
},
{
"language": "javascript",
"autoFix": true
}
],
"explorer.confirmDelete": false,
"eslint.autoFixOnSave": true,
"html.format.wrapLineLength": 200,
"editor.wordWrapColumn": 280,
"editor.wordWrap": "on",
"html.format.wrapAttributes": "force",
"editor.snippetSuggestions": "top",
"vetur.format.defaultFormatter.html": "js-beautify-html",
"vetur.format.defaultFormatterOptions": {
"js-beautify-html": {
"wrap_attributes": "auto"
}
}
}
Это мой .eslintrc.js
module.exports = {
root: true,
env: {
node: true,
},
plugins: ['es-beautifier'],
extends: ['plugin:vue/essential', 'plugin:es-beautifier/standard'],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'comma-dangle': ['error', 'never'],
// 'no-trailing-spaces': [0],
// indent: 'off',
'linebreak-style': 'off',
},
parserOptions: {
parser: 'babel-eslint',
},
};
Спасибо!