标题eslint 版本不一致 导致很多问题 比如无法保存的时候校验,首行缩进无效等 babel-eslint这个依赖的版本不一致非常坑
vscode我这里保存下两个版本下的配置
插件eslint 自己下载
1.webpack创建的项目
eslint版本
“eslint”: “^4.19.1”,
“eslint-friendly-formatter”: “4.0.1”,
“eslint-loader”: “2.0.0”,
“eslint-plugin-html”: “^6.0.2”,
“eslint-plugin-vue”: “4.7.1”,
“babel-eslint”: “^7.2.3”,
2.vue-cli项目
“eslint”: “^6.7.2”,
“eslint-plugin-html”: “^6.0.2”,
“eslint-plugin-import”: “^2.20.2”,
“eslint-plugin-vue”: “^6.2.2”,
“@vue/eslint-config-airbnb”: “^5.0.2”,
“babel-eslint”: “8.0.1”,
“@vue/cli-plugin-eslint”: “~4.4.0”,
公共的.vscode文件 保存时走selint校验
// 将设置放入此文件中以覆盖默认值和用户设置。
{// 配置语言关联优先级"files.associations": {"*.vue": "vue"},// 保存格式化"files.autoSave": "off",// eslint检查的文件类型"eslint.validate": ["javascript","javascriptreact",{"language": "vue","autoFix": true}],"eslint.options": {"plugins": ["html"]},// 保存时校验 走eslint 自动格式化"eslint.enable": true,"editor.codeActionsOnSave": {"source.fixAll.eslint": "explicit"},//配置内配置对 .vue 文件的格式化"[vue]": {"editor.defaultFormatter": "rvest.vs-code-prettier-eslint"},//配置内配置对 .ts 文件的格式化"[typescript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},//配置内配置对 .js 文件的格式化"[javascript]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},//配置内配置对 .json 文件的格式化"[jsonc]": {"editor.defaultFormatter": "esbenp.prettier-vscode"},"git.mergeEditor": false,"merge-conflict.autoNavigateNextConflict.enabled": true,"i18n-ally.localesPaths": ["src/lang"],"vetur.languageFeatures.semanticTokens": false,
}
.eslintrc.js
module.exports = {globals: {'SdAgent': false},root: true,parserOptions: {parser: 'babel-eslint',sourceType: 'module'},env: {browser: true,node: true,jquery: true,es6: true,},extends: ['plugin:vue/recommended', 'eslint:recommended'],// add your custom rules here//it is base on https://github.com/vuejs/eslint-config-vuerules: {"vue/html-self-closing": 0,"vue/max-attributes-per-line": [2, {"singleline": 5,"multiline": {"max": 1,"allowFirstLine": false}}],"vue/name-property-casing": ["error", "PascalCase"],'accessor-pairs': 2,'arrow-spacing': [2, {'before': true,'after': true}],'block-spacing': [2, 'always'],'brace-style': [2, '1tbs', {'allowSingleLine': true}],'camelcase': [0, {'properties': 'always'}],'comma-dangle': [2, 'never'],'comma-spacing': [2, {'before': false,'after': true}],"no-unused-vars":"off",'comma-style': [2, 'last'],'constructor-super': 2,'curly': [2, 'multi-line'],'dot-location': [2, 'property'],'eol-last': 2,'eqeqeq': [2, 'allow-null'],'generator-star-spacing': [2, {'before': true,'after': true}],'handle-callback-err': [2, '^(err|error)$'],'indent': [2, 2, {'SwitchCase': 1}],'jsx-quotes': [2, 'prefer-single'],'key-spacing': [2, {'beforeColon': false,'afterColon': true}],'keyword-spacing': [2, {'before': true,'after': true}],'new-cap': [2, {'newIsCap': true,'capIsNew': false}],'new-parens': 2,'no-array-constructor': 2,'no-caller': 2,'no-console': 'off','no-class-assign': 2,'no-cond-assign': 2,'no-const-assign': 2,'no-control-regex': 0,'no-debugger': 0,'no-delete-var': 2,'no-dupe-args': 2,'no-dupe-class-members': 2,'no-dupe-keys': 2,'no-duplicate-case': 2,'no-empty-character-class': 2,'no-empty-pattern': 2,'no-eval': 2,'no-ex-assign': 2,'no-extend-native': 0,'no-extra-bind': 2,'no-extra-boolean-cast': 2,'no-extra-parens': [2, 'functions'],'no-fallthrough': 2,'no-floating-decimal': 2,'no-func-assign': 2,'no-implied-eval': 2,'no-inner-declarations': [2, 'functions'],'no-invalid-regexp': 2,'no-irregular-whitespace': 2,'no-iterator': 2,'no-label-var': 2,'no-labels': [2, {'allowLoop': false,'allowSwitch': false}],'no-lone-blocks': 2,'no-mixed-spaces-and-tabs': 2,'no-multi-spaces': 2,'no-multi-str': 2,'no-multiple-empty-lines': [2, {'max': 1}],'no-native-reassign': 2,'no-negated-in-lhs': 2,'no-new-object': 2,'no-new-require': 2,'no-new-symbol': 2,'no-new-wrappers': 2,'no-obj-calls': 2,'no-octal': 2,'no-octal-escape': 2,'no-path-concat': 2,'no-proto': 2,'no-redeclare': 2,'no-regex-spaces': 2,'no-return-assign': [2, 'except-parens'],'no-self-assign': 2,'no-self-compare': 2,'no-sequences': 2,'no-shadow-restricted-names': 2,'no-spaced-func': 2,'no-sparse-arrays': 2,'no-this-before-super': 2,'no-throw-literal': 2,'no-trailing-spaces': 2,'no-undef': 2,'no-undef-init': 2,'no-unexpected-multiline': 2,'no-unmodified-loop-condition': 2,'no-unneeded-ternary': [2, {'defaultAssignment': false}],'no-unreachable': 2,'no-unsafe-finally': 2,// 'no-unused-vars': [2, {// 'vars': 'all',// 'args': 'none'// }],'no-useless-call': 2,'no-useless-computed-key': 2,'no-useless-constructor': 2,'no-useless-escape': 0,'no-whitespace-before-property': 2,'no-with': 2,'one-var': 0,'operator-linebreak': [2, 'after', {'overrides': {'?': 'before',':': 'before'}}],'padded-blocks': [2, 'never'],'quotes': [2, 'single', {'avoidEscape': true,'allowTemplateLiterals': true}],'semi': [2, 'never'],'semi-spacing': [2, {'before': false,'after': true}],'space-before-blocks': [2, 'always'],'space-before-function-paren': [2, 'never'],'space-in-parens': [2, 'never'],'space-infix-ops': 2,'vue/require-default-prop':0,'space-unary-ops': [2, {'words': true,'nonwords': false}],'spaced-comment': [2, 'always', {'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']}],'template-curly-spacing': [2, 'never'],'use-isnan': 2,'valid-typeof': 2,'wrap-iife': [2, 'any'],'yield-star-spacing': [2, 'both'],'yoda': [2, 'never'],'prefer-const': 0,// 'no-': process.env.NODE_ENV === 'production' ? 2 : 0,'object-curly-spacing': [2, 'always', {objectsInObjects: false}],'array-bracket-spacing': [2, 'never'],'no-self-assign':0,'no-return-assign':0,'vue/order-in-components':0,'no-case-declarations':0}
}