vue项目整合eslint(使用vscode)

demo工程git地址:https://github.com/huangkaizh/vue-eslint-demo

1、安装node、vue-cli(2.*)等参考官网

2、cmd窗口中运行

vue init webpack eslint-demo

相关选项如下图所示:

脚手架初始化工程

3、vscode安装prettier、eslint等插件

4、vscode-文件-首选项-设置(点击右上角图标打开对象模式)

添加以下配置项:

{

  //根据文件后缀名定义vue文件类型

  "files.associations": {

    "*.vue": "vue"

  },

  "eslint.autoFixOnSave": true,

  "eslint.options": {

    "extensions": [".js", ".vue"]

  },

  "eslint.validate": [

    "javascript",

    {

      "language": "vue",

      "autoFix": true

    },

    "html",

    "vue"

  ],

  "[less]": {

    "editor.defaultFormatter": "esbenp.prettier-vscode"

  },

  "[javascript]": {

    "editor.defaultFormatter": "esbenp.prettier-vscode"

  },

  "[jsonc]": {

    "editor.defaultFormatter": "esbenp.prettier-vscode"

  },

  "[json]": {

    "editor.defaultFormatter": "esbenp.prettier-vscode"

  },

  "[html]": {

    "editor.defaultFormatter": "esbenp.prettier-vscode"

  },

  "[css]": {

    "editor.defaultFormatter": "esbenp.prettier-vscode"

  }

}

为方便项目中其他成员,可以考虑在项目下新建.vscode文件夹,新建settings.json文件,将上述json复制进去。

5、项目安装以下依赖

复制以下代码到package.json中的devDependencies对象中:

    "@vue/eslint-config-standard": "^4.0.0", 

    "babel-eslint": "^10.0.2",

    "eslint": "^6.1.0",

    "eslint-config-prettier": "^6.1.0",

    "eslint-plugin-vue": "^5.2.3", 

    "prettier": "^1.18.2",


项目安装依赖

npm i

6、eslint的配置文件(.eslintrc.js)做如下修改

{

  "extends": ["prettier"]

}

整个文件如下所示:

module.exports = {

  env: {

    node: true

  },

  parserOptions: {

    parser: "babel-eslint",

    sourceType: "module",

    allowImportExportEverywhere: false,

    codeFrame: false

  },

  extends: ["@vue/standard", "plugin:vue/strongly-recommended", "prettier"],

  rules: {

    quotes: [1, "single", "avoid-escape"], //引号风格

    // allow async-await

    "generator-star-spacing": "off",

    // allow debugger during development

    "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",

    // @fixable 结尾必须有分号

    semi: [

      "error",

      "always",

      {

        omitLastInOneLineBlock: true

      }

    ],

    // @fixable 一行有多个语句时,分号前面禁止有空格,分号后面必须有空格

    "semi-spacing": [

      "error",

      {

        before: false,

        after: true

      }

    ],

    // @fixable 分号必须写在行尾,禁止在行首出现

    "semi-style": ["error", "last"],

    //

    //

    // 可能的错误

    //

    // 禁止重复的二级键名

    // @off 没必要限制

    "vue/no-dupe-keys": "off",

    // 禁止 <template> 使用 key 属性

    // @off 太严格了

    "vue/no-template-key": "off",

    // prop 的默认值必须匹配它的类型

    // @off 太严格了

    "vue/require-valid-default-prop": "off",

    //

    //

    // 最佳实践

    //

    // @fixable html 的结束标签必须符合规定

    // @off 有的标签不必严格符合规定,如 <br> 或 <br/> 都应该是合法的

    "vue/html-end-tags": "off",

    // 禁止在计算属性中对属性修改

    // @off 太严格了

    "vue/no-side-effects-in-computed-properties": "off",

    // prop 需要设置默认值

    // @off 太严格了

    "vue/require-default-prop": "off",

    // 组件的属性必须为一定的顺序

    "vue/order-in-components": "error",

    //

    //

    // 风格问题

    //

    // @fixable 限制自定义组件的属性风格

    // @off 没必要限制

    "vue/attribute-hyphenation": "off",

    // html 属性值必须用双引号括起来

    "vue/html-quotes": "error",

    // @fixable 没有内容时,组件必须自闭和

    // @off 没必要限制

    "vue/html-self-closing": "off",

    // 限制每行允许的最多属性数量

    // @off 没必要限制

    "vue/max-attributes-per-line": "off",

    // @fixable 限制组件的 name 属性的值的风格

    // @off 没必要限制

    "vue/name-property-casing": "off",

    // @fixable 禁止出现连续空格

    "vue/no-multi-spaces": "error",

    // @fixable 限制 v-bind 的风格

    // @off 没必要限制

    "vue/v-bind-style": "off",

    // @fixable 限制 v-on 的风格

    // @off 没必要限制

    "vue/v-on-style": "off",

    // 单行元素的内容之前和之后强制执行换行符

    // @off 没必要限制

    "vue/singleline-html-element-content-newline": "off"

  }

};

7、prettier与eslint单引号冲突解决:

工程目录下新建.prettierrc,文件内容如下:

{

  "singleQuote": true

}

最终效果如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339