@qfrontend

Почему VS Code не форматирует при сохранении ESLint & Prettier?

Приветствую) Почему VS Code не форматирует при сохранении ESLint & Prettier?
Установила create-react-app typescript + eslint & prettier.
Делала всё как написано в этом туториал ТЫК.
Но при сохранении не форматирует.
Если отдельно набрать в терминале npm run lint или npm run format - то всё работает.
Как сделать так что бы форматировало при сохранении файла?
Буду очень благодарна за любую помощь)

package.json
{
  "name": "formatting-project",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "@types/jest": "^26.0.15",
    "@types/node": "^12.0.0",
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "react": "^17.0.1",
    "react-dom": "^17.0.1",
    "react-scripts": "4.0.3",
    "typescript": "^4.1.2",
    "web-vitals": "^1.0.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "lint": "eslint --ext .js,.jsx,.ts,.tsx src --color",
    "format": "prettier --write 'src/**/*.{ts,tsx,scss,css,json}'",
    "isready": "npm run format && npm run lint && npm run build"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "4.15.2",
    "@typescript-eslint/parser": "4.15.2",
    "babel-eslint": "10.1.0",
    "eslint-config-airbnb": "18.2.1",
    "eslint-config-airbnb-typescript": "12.3.1",
    "eslint-config-prettier": "8.1.0",
    "eslint-config-react-app": "6.0.0",
    "eslint-import-resolver-typescript": "2.4.0",
    "eslint-loader": "4.0.2",
    "eslint-plugin-flowtype": "5.2.2",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-jsx-a11y": "6.4.1",
    "eslint-plugin-prettier": "^3.3.1",
    "eslint-plugin-react": "7.22.0",
    "eslint-plugin-react-hooks": "4.2.0",
    "prettier": "^2.2.1",
    "prettier-eslint": "^12.0.0",
    "prettier-eslint-cli": "^5.0.1"
  }
}


vscode/settings.json
{
  "workbench.colorTheme": "Eva Dark Bold",
  "editor.fontSize": 16,
  "editor.quickSuggestions": true,
  "files.associations": {
    "*.jsx": "javascriptreact"
  },
  "editor.insertSpaces": true,
  "editor.detectIndentation": false,
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "files.autoSave": "onFocusChange",
  "editor.multiCursorModifier": "ctrlCmd",
  "vscodeGoogleTranslate.preferredLanguage": "Russian"
}
  • Вопрос задан
  • 3090 просмотров
Решения вопроса 1
WblCHA
@WblCHA
Во-первых, надо поставить плагины преттиера и еслинта в вскод. Возможно, в статье это есть, но я не увидел и это очень странно.
Во-вторых, разрешить преттиеру и еслинту работать с файлами (окошко справа внизу должно высветиться), а так же сделать преттиер форматёром по дефолту, либо так:
"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[yaml]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },

В-третьих, срабатывание еслинта на сохранении очень спорное решение, поскольку он может поменять не только оформление, но и сам код, что не всегда желательно, поэтому такие моменты лучше решать вручную, тем более что с плагином он все ошибки подсветит и предложит аутофикс.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@ma_rch
моя проблема была в том что в vscode в приложении react prettier не редактировал файлы jsx. Вот что мне помогло (в том числе и при сохранении):
"[javascriptreact]": {
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },

добавить в vscode settings.json
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 22:03
3000 руб./за проект
23 нояб. 2024, в 21:53
30000 руб./за проект
23 нояб. 2024, в 21:49
1000 руб./в час