eslint (vue / html-closing-bracket-newline) 충돌을 해결하는 방법

Mithun Shreevatsa

저장시 VSCode는 eslint가 모든 규칙을 수정하고 있습니다. 아래 충돌을 해결하는 방법은 무엇입니까?

예상 들여 쓰기

예상 들여 쓰기

예기치 않은 들여 쓰기

예기치 않은 들여 쓰기

사용중인 VScode 플러그인 :

 [
    "formulahendry.auto-close-tag",
    "msjsdiag.debugger-for-chrome",
    "hookyqr.beautify",
    "mikestead.dotenv",
    "dbaeumer.vscode-eslint",
    "donjayamanne.githistory",
    "eamodio.gitlens",
    "sidthesloth.html5-boilerplate",
    "ecmel.vscode-html-css",
    "abusaidm.html-snippets",
    "wix.vscode-import-cost",
    "lonefy.vscode-js-css-html-formatter",
    "eg2.vscode-npm-script",
    "christian-kohler.npm-intellisense",
    "sibiraj-s.vscode-scss-formatter",
    "octref.vetur",
    "blanu.vscode-styled-jsx",
    "jcbuisson.vue",
    "hollowtree.vue-snippets",
    "wscats.vue",
    "sdras.vue-vscode-snippets",
    "dariofuzinato.vue-peek",
]

오류

오류

사용중인 구성은 다음과 같습니다.

 'vue/html-closing-bracket-newline': [
  'error',
  {
    singleline: 'never',
    multiline: 'never'
  }
],
'indent': ['error', 2],
'vue/html-indent': ['error', 2],
'vue/script-indent': ['error', 2],
'vue/multiline-html-element-content-newline': 0

VSCode 설정

 {
    "editor.formatOnSave": true,
    "[javascript]": {
        "editor.formatOnSave": true
    },
    "eslint.alwaysShowStatus": true,
    "files.autoSave": "onFocusChange",
    "emmet.includeLanguages": {
        "javascript": "javascriptreact",
        "vue-html": "html",
        "plaintext": "jade",
        "edge": "html"
    },
    "emmet.syntaxProfiles": {
        "javascript": "jsx"
    },
    "emmet.triggerExpansionOnTab": true,
    "emmet.showSuggestionsAsSnippets": true,
    "files.associations": {
        "*.js": "javascriptreact"
    },
    "editor.fontSize": 14,
    "git.enableSmartCommit": true,
    "git.confirmSync": false,
    "search.exclude": {
        "**/.git": true,
        "**/node_modules": true,
        "**/bower_components": true,
        "**/tmp": true,
        "**/.bin": true,
        "**/.next": true,
        "**/__snapshots__/**": true,
        "**/coverage/**": true,
        "**/report/**": true
    },
    "javascript.updateImportsOnFileMove.enabled": "always",
    "explorer.confirmDragAndDrop": false,
    "explorer.confirmDelete": false,
    "diffEditor.ignoreTrimWhitespace": false,
    "workbench.editor.enablePreviewFromQuickOpen": false,
    "files.exclude": {
        ".next": true,
        "*.log": true,
        "**/__pycache__": true,
        "**/node_modules": true,
        "**/o": true,
        "dist": true,
        "geckodriver.log": true,
        "package-lock.json": true,
        "yarn.lock": true
    },
    "window.zoomLevel": 1,
    "editor.find.globalFindClipboard": true,
    "editor.fontLigatures": true,
    "editor.formatOnType": true,
    "team.showWelcomeMessage": false,
    "git.autofetch": true,
    "workbench.startupEditor": "newUntitledFile",
    "editor.codeActionsOnSave": {
        // For ESLint
        "source.fixAll.eslint": true,
        // For TSLint
        "source.fixAll.tslint": true,
        // For Stylelint
        "source.fixAll.stylelint": true
    },
    "launch": {},
    "workbench.colorCustomizations": {},
    "javascript.validate.enable": true,
    "javascript.suggestionActions.enabled": false,
    "editor.insertSpaces": false,
    "editor.detectIndentation": false,
    "prettier.disableLanguages": [],
    "vetur.format.defaultFormatter.js": "vscode-typescript",
    "vetur.format.defaultFormatter.html": "js-beautify-html",
    "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
    "eslint.validate": [
        "vue",
        "html",
        "javascript",
        "typescript",
        "javascriptreact",
        "typescriptreact"
    ]
}
  • 여러 줄 형식은 유지해야하지만 닫는 대괄호는 이미지에서 예상 한 것과 같은 줄 자체에 있어야합니다.
  • eslint와 vscode 설정간에 충돌이 없어야합니다.
  • 필요한 vscode 설정이 필요합니다. vue 설정을위한 및 eslint 설정 또한 sass 파일은 사전 커밋 검사에서 매번 정렬에 영향을받지 않아야합니다.
  • vue, js 및 sass 파일에 대해 2 개의 공백 대신 탭 정렬을 고려하면 좋습니다.
Mithun Shreevatsa

4 스페이스 / 탭은 고통이며 해결하기가 어렵습니다. 따라서 내 요구 사항에 맞게 설정을 거의 변경하지 않고 2 공간을 고수합니다.

.vscode / settings.json

{
  "editor.formatOnSave": true,
  "[javascript]": {
    "editor.tabSize": 4,
    "editor.insertSpaces": true
  },
  "[vue]": {
    "editor.tabSize": 4,
    "editor.insertSpaces": true
  },
  "eslint.alwaysShowStatus": true,
  "files.autoSave": "onFocusChange",
  "emmet.includeLanguages": {
    "javascript": "javascriptreact",
    "vue-html": "html",
    "plaintext": "jade",
    "edge": "html"
  },
  "emmet.syntaxProfiles": {
    "javascript": "jsx"
  },
  "emmet.triggerExpansionOnTab": true,
  "emmet.showSuggestionsAsSnippets": true,
  "files.associations": {
    "*.js": "javascriptreact"
  },
  "editor.fontSize": 14,
  "git.enableSmartCommit": true,
  "git.confirmSync": false,
  "search.exclude": {
    "**/.git": true,
    "**/node_modules": true,
    "**/bower_components": true,
    "**/tmp": true,
    "**/.bin": true,
    "**/.next": true,
    "**/__snapshots__/**": true,
    "**/coverage/**": true,
    "**/report/**": true
  },
  "javascript.updateImportsOnFileMove.enabled": "always",
  "explorer.confirmDragAndDrop": false,
  "explorer.confirmDelete": false,
  "diffEditor.ignoreTrimWhitespace": false,
  "workbench.editor.enablePreviewFromQuickOpen": false,
  "files.exclude": {
    ".next": true,
    "*.log": true,
    "**/__pycache__": true,
    "**/node_modules": true,
    "**/o": true,
    "dist": true,
    "geckodriver.log": true,
    "package-lock.json": true,
    "yarn.lock": true
  },
  "window.zoomLevel": 1,
  "editor.find.globalFindClipboard": true,
  "editor.fontLigatures": true,
  "editor.formatOnType": true,
  "team.showWelcomeMessage": false,
  "git.autofetch": true,
  "workbench.startupEditor": "newUntitledFile",
  "editor.codeActionsOnSave": {
    // For ESLint
    "source.fixAll.eslint": true,
    // For TSLint
    "source.fixAll.tslint": true,
    // For Stylelint
    "source.fixAll.stylelint": true
  },
  "launch": {},
  "workbench.colorCustomizations": {},
  "javascript.validate.enable": true,
  "javascript.suggestionActions.enabled": false,
  "editor.insertSpaces": false,
  "editor.detectIndentation": false,
  "prettier.disableLanguages": [],
  "vetur.format.defaultFormatter.html": "prettyhtml",
  "vetur.format.defaultFormatter.css": "prettier",
  "vetur.format.defaultFormatter.postcss": "prettier",
  "vetur.format.defaultFormatter.scss": "prettier",
  "vetur.format.defaultFormatter.less": "prettier",
  "vetur.format.defaultFormatter.stylus": "stylus-supremacy",
  "vetur.format.defaultFormatter.js": "prettier",
  "vetur.format.defaultFormatter.ts": "prettier",
  "vetur.format.defaultFormatter.sass": "sass-formatter",
  "vetur.validation.template": true,
  "vetur.format.defaultFormatterOptions": {
    "prettyhtml": {
      "printWidth": 100, // No line exceeds 100 characters
      "singleQuote": false // Prefer double quotes over single quotes
    }
  },
  "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
  "eslint.validate": ["javascript", "javascriptreact", "html", "vue"],
  "eslint.options": {
    "extensions": [".js", ".vue"]
  },
  "eslint.probe": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "html",
    "vue"
  ]
}

package.json devDependencies

"devDependencies": {
    "@vue/cli-plugin-babel": "4.2.3",
    "@vue/cli-plugin-eslint": "^4.3.1",
    "@vue/cli-plugin-router": "4.2.3",
    "@vue/cli-service": "4.2.3",
    "@vue/eslint-config-prettier": "6.0.0",
    "@vue/eslint-config-standard": "^5.1.2",
    "babel-eslint": "^10.1.0",
    "eslint": "6.8.0",
    "eslint-config-airbnb": "^18.1.0",
    "eslint-config-import": "0.13.0",
    "eslint-config-prettier": "^6.11.0",
    "eslint-plugin-es-beautifier": "^1.0.1",
    "eslint-plugin-import": "^2.20.2",
    "eslint-plugin-modules": "^1.1.1",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-prettier": "^3.1.3",
    "eslint-plugin-prettier-vue": "^2.1.0",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-standard": "^4.0.0",
    "eslint-plugin-vue": "^6.2.2",
    "express": "^4.17.1",
    "fibers": "4.0.2",
    "gulp": "4.0.2",
    "gulp-append-prepend": "1.0.8",
    "husky": "^4.2.5",
    "jest": "^25.4.0",
    "jest-sonar-reporter": "^2.0.0",
    "json-server": "^0.16.1",
    "node-sass": "4.13.1",
    "nodemon": "^2.0.3",
    "pretty-quick": "^2.0.1",
    "sass": "1.26.3",
    "sass-loader": "^8.0.2",
    "vue-jest": "^3.0.5",
    "vue-template-compiler": "2.6.11"
  },

.eslintrc.js

module.exports = {
  root: true,

  env: {
    node: true,
    jest: true
  },

  extends: ['plugin:vue/essential', '@vue/standard'],

  rules: {
    quotes: [
      2,
      'single',
      {
        avoidEscape: true
      }
    ],
    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-unused-vars': [
      'error',
      {
        vars: 'all',
        varsIgnorePattern: 'css',
        args: 'all'
      }
    ],
    'no-use-before-define': [
      'error',
      {
        functions: false,
        classes: true
      }
    ],
    'no-var': 'error',
    'prefer-const': 2,
    eqeqeq: [
      'error',
      'always',
      {
        null: 'ignore'
      }
    ],
    'no-array-constructor': 'error',
    'no-new-object': 'error',
    'no-bitwise': 'error',
    'no-redeclare': 2,
    'no-proto': 2,
    'no-invalid-regexp': 2,
    'vue/script-indent': ['error', 2],
    'vue/html-closing-bracket-newline': [
      'error',
      {
        singleline: 'never',
        multiline: 'always'
      }
    ],
    'space-before-function-paren': [2, 'never'],
    'no-new': 0,
    'no-implied-eval': 0,
    'handle-callback-err': 0,
    'no-extend-native': 0,
    indent: ['error', 2, { SwitchCase: 1 }],
    semi: [2, 'always'],
    'vue/html-indent': [
      'error',
      2,
      {
        attribute: 1,
        baseIndent: 1,
        closeBracket: 0,
        alignAttributesVertically: true,
        ignores: ['pre', 'textarea', 'span']
      }
    ],
    'no-tabs': 0,
    'vue/singleline-html-element-content-newline': [
      'error',
      {
        ignoreWhenNoAttributes: true,
        ignoreWhenEmpty: true,
        ignores: ['pre', 'textarea', 'span']
      }
    ]
  },

  parserOptions: {
    parser: 'babel-eslint'
  },

  globals: {
    console: true,
    alert: true,
    document: true,
    __dirname: true,
    require: true,
    window: true,
    process: true,
    module: true,
    define: true,
    _: true,
    Promise: true,
    setTimeout: true,
    clearTimeout: true,
    mount: true,
    clearInterval: true,
    setInterval: true,
    $: false,
    MutationObserver: false,
    Map: false,
    localStorage: true
  }
};

.prettierrc.js

module.exports = {
  singleQuote: true,
  tabWidth: 2
};

.jshintrc

{
    "esversion": 9
}

.editorconfig

[*.{js,jsx,ts,tsx,vue}]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

그게 다이고 모든 것이 기대대로 작동합니다. 이것이 누군가를 돕기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

WebStorm에서 "react / jsx-closing-bracket-location"을 수정하는 방법

분류에서Dev

충돌하는 eslint 규칙을 찾는 방법

분류에서Dev

github에서 병합 충돌을 해결하는 방법

분류에서Dev

Eclipse SVN에서 충돌을 해결하는 방법

분류에서Dev

sqlplus 충돌을 해결하는 방법은 무엇입니까?

분류에서Dev

Eclipse egit에서 충돌을 해결하는 방법

분류에서Dev

jquery-두 개의 jquery 충돌을 해결하는 방법

분류에서Dev

내 AsyncTask로 인한이 충돌을 해결하는 방법

분류에서Dev

ESLint & Vue-`$ log` 사용을 금지하는 방법은 무엇입니까?

분류에서Dev

앱 충돌을 방지하는 방법

분류에서Dev

충돌하는 Google Play 서비스 버전을 해결하는 방법

분류에서Dev

해시 테이블에서 충돌을 해결하는 방법 비교

분류에서Dev

충돌을 감지하는 방법?

분류에서Dev

Gradle 충돌을 제거하는 방법

분류에서Dev

email_spec 설치 후 gem 종속성 충돌을 해결하는 방법

분류에서Dev

Appium 충돌을 다시 해결하는 방법은 무엇입니까?

분류에서Dev

패키지 충돌을 해결하는 방법은 무엇입니까?

분류에서Dev

부트 스트랩 클래스 이름의 충돌을 해결하는 방법

분류에서Dev

Git-충돌을 숨기고 나중에 해결하는 방법

분류에서Dev

apt-get으로 패키지 충돌을 해결하는 방법

분류에서Dev

브라우저 동기화 및 socket.io 충돌을 해결하는 방법?

분류에서Dev

Rails 병합 충돌을 db / structure.sql과 해결하는 방법

분류에서Dev

크롬 충돌을 막는 방법?

분류에서Dev

mySQL-python 종속성을 설치하기 위해 mysql과 Mariadb 충돌을 해결하는 방법

분류에서Dev

jquery를 사용하여 두 HTML 요소 간의 충돌을 확인하는 방법

분류에서Dev

HTML 양식을 통해 내 서버에 연결하는 방법

분류에서Dev

git pull --rebase-충돌 해결 후 진행하는 방법

분류에서Dev

풀 요청을 실제로 병합하지 않고 로컬에서 충돌을 해결하는 방법

분류에서Dev

Android 11 (SDK 30)을 실행하는 앱에서 충돌 문제를 해결하는 방법

Related 관련 기사

  1. 1

    WebStorm에서 "react / jsx-closing-bracket-location"을 수정하는 방법

  2. 2

    충돌하는 eslint 규칙을 찾는 방법

  3. 3

    github에서 병합 충돌을 해결하는 방법

  4. 4

    Eclipse SVN에서 충돌을 해결하는 방법

  5. 5

    sqlplus 충돌을 해결하는 방법은 무엇입니까?

  6. 6

    Eclipse egit에서 충돌을 해결하는 방법

  7. 7

    jquery-두 개의 jquery 충돌을 해결하는 방법

  8. 8

    내 AsyncTask로 인한이 충돌을 해결하는 방법

  9. 9

    ESLint & Vue-`$ log` 사용을 금지하는 방법은 무엇입니까?

  10. 10

    앱 충돌을 방지하는 방법

  11. 11

    충돌하는 Google Play 서비스 버전을 해결하는 방법

  12. 12

    해시 테이블에서 충돌을 해결하는 방법 비교

  13. 13

    충돌을 감지하는 방법?

  14. 14

    Gradle 충돌을 제거하는 방법

  15. 15

    email_spec 설치 후 gem 종속성 충돌을 해결하는 방법

  16. 16

    Appium 충돌을 다시 해결하는 방법은 무엇입니까?

  17. 17

    패키지 충돌을 해결하는 방법은 무엇입니까?

  18. 18

    부트 스트랩 클래스 이름의 충돌을 해결하는 방법

  19. 19

    Git-충돌을 숨기고 나중에 해결하는 방법

  20. 20

    apt-get으로 패키지 충돌을 해결하는 방법

  21. 21

    브라우저 동기화 및 socket.io 충돌을 해결하는 방법?

  22. 22

    Rails 병합 충돌을 db / structure.sql과 해결하는 방법

  23. 23

    크롬 충돌을 막는 방법?

  24. 24

    mySQL-python 종속성을 설치하기 위해 mysql과 Mariadb 충돌을 해결하는 방법

  25. 25

    jquery를 사용하여 두 HTML 요소 간의 충돌을 확인하는 방법

  26. 26

    HTML 양식을 통해 내 서버에 연결하는 방법

  27. 27

    git pull --rebase-충돌 해결 후 진행하는 방법

  28. 28

    풀 요청을 실제로 병합하지 않고 로컬에서 충돌을 해결하는 방법

  29. 29

    Android 11 (SDK 30)을 실행하는 앱에서 충돌 문제를 해결하는 방법

뜨겁다태그

보관