#javascript #visual-studio-code #eslint #vscode-settings #prettier-eslint
#javascript #eslint #visual-studio-code #более красивый-eslint
Вопрос:
У меня есть проект Vue, в котором есть некоторые несоответствия с его компоновкой.
Я использую последнюю версию VS Code.
Например, это ошибка компоновки, которую я получаю:
После сохранения файла VS Code автоматически исправляет, чтобы код выглядел примерно так
Однако, когда я пытаюсь запустить npm run serve
Я получаю сообщение об ошибке с просьбой изменить его обратно.
error: Replace `(h)·=>·h(App),` with `h·=>·h(App)` (prettier/prettier) at src/main.js:91:11:
89 | router,
90 | store,
> 91 | render: (h) => h(App),
| ^
92 | }).$mount("#app");
93 |
мой файл .eslintrc.json является
{
"env": {
"browser": true,
"es6": true,
"jest/globals": true
},
"extends": [
"plugin:vue/essential",
"airbnb-base",
"plugin:prettier/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parserOptions": {
"parser": "babel-eslint"
// "ecmaVersion": 2018,
// "sourceType": "module"
},
"plugins": [
"vue",
"jest"
],
"rules": {},
"overrides": [
{
"files": [
"*.js",
"*.vue"
],
"rules": {
"sort-imports": "off",
"spaced-comment": "off",
"import/prefer-default-export": "off",
"import/no-unresolved": "off",
"import/extensions": "off",
"func-names": "off",
"object-shorthand": "off",
"eqeqeq": "warn",
"prefer-const": "off",
"camelcase": "off",
"no-plusplus": "off",
"no-else-return": "off",
"consistent-return": "off",
"no-restricted-syntax": "off",
"no-shadow": "off",
"prefer-destructuring": "off",
"no-return-assign": "off",
"guard-for-in": "off",
"jest/no-disabled-tests": "warn",
"jest/no-focused-tests": "error",
"jest/no-identical-title": "error",
"jest/prefer-to-have-length": "warn",
"jest/valid-expect": "error"
}
}
]
}
и мой файл настроек VSCode.json является
{
"eslint.codeAction.showDocumentation": {
"enable": true
},
"explorer.confirmDelete": false,
"remote.extensionKind": {
"pub.name": ["ui"]
},
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.validate": ["javascript", "vue", "html"],
"editor.formatOnPaste": true,
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.alwaysShowStatus": true,
"eslint.run": "onSave",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"vetur.format.defaultFormatter.html": "prettier",
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
"vetur.format.defaultFormatter.stylus": "none",
"editor.formatOnType": true,
"workbench.colorTheme": "Community Material Theme Darker",
"window.zoomLevel": 1
}
Я предполагаю, что должно быть несоответствие проекта и кода, но я могу его найти.
Использование npm run serve
auto исправляет файл, однако, если я снова сохраню файл-нарушитель, внезапно он снова всплывает с ошибками компоновки (которые затем приводят к сбою приложения Vue в dev).
Я пробовал npm cache clear --force
изменять разрешения для модулей узла и переустанавливать их, но безуспешно.
Я думаю, мне нужно указать моим локальным правилам переопределить prettier, но я не уверен, как это сделать
Ответ №1:
Вам нужно использовать eslint-config-prettier
, чтобы отключить правила eslint, которые конфликтуют с prettier. Не забудьте также включить prettier/vue
правила
https://github.com/prettier/eslint-config-prettier
"extends": [
"plugin:vue/essential",
"airbnb-base",
"plugin:prettier/recommended",
“prettier”,
“prettier/vue”
],
Ответ №2:
Для решения конфликта
Вы можете заставить eslint принимать все более красивые форматы, установив конфигурацию eslint для prettier
npm install eslint-config-prettier
И включите это в extends
параметр в файле .eslintrc.js
extends: [
...,
"prettier",
],
Теперь он не будет жаловаться на предпочтения более красивого формата