#javascript #reactjs #visual-studio-code #eslint #prettier
Вопрос:
Я установил расширение Eslint-Prettier в VSCode. У меня уже есть .eslintrc.js и мой форматировщик по умолчанию (Eslint-prettier) не форматирует в соответствии с моими правилами eslint.
Например: когда я набираю npm, запускаю eslint. —исправление удаляет все точки с запятой, но после того, как я нажал CTRL V, prettier снова добавляет точки с запятой..
Все работало хорошо, пока я не отформатировал свой компьютер. Кто-нибудь может мне помочь?
мой .eslintrc.js содержимое файлов — это
module.exports = {
env: {
node: true,
es6: true,
browser: true
},
parserOptions: {
ecmaVersion: 6,
sourceType: "module",
ecmaFeatures: {
jsx: true,
modules: true,
experimentalObjectRestSpread: true
}
},
rules: {
"no-console": "off",
"no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",
// Best Practices
eqeqeq: "error",
"no-invalid-this": "error",
"no-return-assign": "error",
"no-unused-expressions": ["error", { allowTernary: true }],
"no-useless-concat": "error",
"no-useless-return": "error",
// Variable
// 'init-declarations': 'error',
"no-use-before-define": "error",
// Stylistic Issues
"array-bracket-newline": ["error", { multiline: true, minItems: null }],
"array-bracket-spacing": "error",
"brace-style": ["error", "1tbs", { allowSingleLine: true }],
"block-spacing": "error",
"comma-dangle": "error",
"comma-spacing": "error",
"comma-style": "error",
"computed-property-spacing": "error",
"func-call-spacing": "error",
"implicit-arrow-linebreak": ["error", "beside"],
// indent: ['error', 4],
"keyword-spacing": "error",
"multiline-ternary": ["error", "never"],
// 'no-lonely-if': 'error',
"no-mixed-operators": "error",
"no-multiple-empty-lines": ["error", { max: 2, maxEOF: 1 }],
"no-tabs": "error",
"no-unneeded-ternary": "error",
"no-whitespace-before-property": "error",
"nonblock-statement-body-position": "error",
"object-property-newline": [
"error",
{ allowAllPropertiesOnSameLine: true }
],
"quote-props": ["error", "as-needed"],
// quotes: ['error', 'prefer-single'],
semi: ["error", "never"],
"semi-spacing": "error",
"space-before-blocks": "error",
// 'space-before-function-paren': 'error',
"space-in-parens": "error",
"space-infix-ops": "error",
"space-unary-ops": "error",
// ES6
"arrow-spacing": "error",
"no-confusing-arrow": "error",
"no-duplicate-imports": "error",
"no-var": "error",
"object-shorthand": "error",
"prefer-const": "error",
"prefer-template": "error"
}
}
Вы можете видеть, что eslint говорит, что нет завершающей комы, после того, как я щелкну правой кнопкой мыши по одному из них и исправлю все автоматически исправляемые проблемы, проблемы исчезнут, но после сохранения расширения файла prettier они снова появятся.
Комментарии:
1. Пожалуйста, укажите содержимое
.eslintrc.js
файла.2. @somename я добавил его в сообщение
Ответ №1:
- Установите eslint:
npm i --save-dev eslint
- Инициализация eslint:
npx eslint --init
Для некоторых параметров вам нужно выбрать следующий:
- Как бы вы хотели использовать ESLint?
- Чтобы проверить синтаксис и найти проблемы
- В каком формате вы хотите, чтобы ваш конфигурационный файл был?
- JavaScript
- Установите prettier:
npm i --save-dev eslint-config-prettier eslint-plugin-prettier prettier
- Создать
.prettierrc
конфигурационный файл:{ "printWidth": 80, "singleQuote": true, "trailingComma": "es5" }
Теперь вы можете проверить стиль с помощью eslint и исправить стиль с помощью prettier из командной строки.
Для интеграции VSCode с eslint и prettier вам необходимо установить один из:
После этого вам нужно установить это расширение в качестве средства форматирования по умолчанию:
- Открыть палитру команд
ctrl shift p
; - Выберите
Format Document With...
; - Выберите
Configure Document With...
; - Выберите
Prettier - Code Formatter
илиESLint
на основе ваших предпочтений.
Теперь eslint будет работать как linter, а prettier — как форматировщик:
Если я сохраню файл, все проблемы с prettier будут исправлены (автоформат при сохранении должен быть включен)
Плагин Eslint не применяет автоматические изменения в настройках, расположенных в
.prettierrc
. Смотрите Вопрос на github. Чтобы исправить это, вы можете:
- переместить
.prettierrc
содержимое в .eslint (не рекомендуется, потому что плагины prettier иногда не читают этот файл);- запустите из командной панели в VSCode
ESLint: Restart ESLint server
после редактирования.prettierrc
файл.
Комментарии:
1. К сожалению, это тоже не сработало. Eslint не предлагал использовать точку с запятой, но мое расширение prettier добавляло точку с запятой в окончания строк. Поэтому я удалил все связанные с prettier расширения и удалил мой .eslintrc.js файл, и я настроил eslint для своего проекта с помощью eslint —init. (выберите некоторые параметры). Когда я щелкаю правой кнопкой мыши по проблеме, я могу нажать «исправить все автоматически исправляемые проблемы», и это то, что я хочу, чтобы расширение выполняло автоматически.
2. Я добавил фотографию, чтобы продемонстрировать проблему
3. @UgurKellecioglu Я обновил свой ответ. К сожалению, в плагине eslint есть ошибка (см. Ссылку на Проблему github в моем ответе): плагин eslint не отслеживает изменения в
.prettierrc
файле. Как это исправить, я описал в моем aswer.