vscode编辑器,vue、小程序等语言适配eslint格式校验 + prettier 保存时自动修改格式

这篇具有很好参考价值的文章主要介绍了vscode编辑器,vue、小程序等语言适配eslint格式校验 + prettier 保存时自动修改格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目的:自留备份,用者自取

基础配置

1 基于vscode编辑器,prettier插件需要下载
2 eslint配置项规则:
https://eslint.bootcss.com/docs/rules/
3 prettier配置项规则:
https://prettier.io/docs/en/options.html

安装插件
"devDependencies": {
    "eslint": "^7.32.0",
    "eslint-plugin-prettier": "^4.2.1"
  }

配置文件问题:
如果项目中带有.vscode文件夹,这里面的setting.json会覆盖全局的setting.json,这样对vscode编辑器做的配置,会被覆盖掉。同样,如果不想修改vscode的全局配置,也可以在这里做个性化的配置。

.vscode -> settings.json 配置项
{
  // vscode默认启用了根据文件类型自动设置tabsize的选项
  "editor.detectIndentation": false,
  // 重新设定tabsize
  "editor.tabSize": 2,
  // 每次保存的时候自动格式化
  "editor.formatOnSave": true,
  "javascript.format.enable": true,
  // 让函数(名)和后面的括号之间取消空格
  "javascript.format.insertSpaceBeforeFunctionParenthesis": false,
  "explorer.confirmDelete": false,
  // 启用保存时自动修复eslint,默认只支持.js文件
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 保存时格式自动对齐
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  // 用eslint的规则检测js文件
  "eslint.validate": ["javascript"]
}
prettierrc.js配置项
module.exports = {
  // prettier的配置
  printWidth: 80, // 每行最多多少个字符换行
  tabWidth: 2, // tab缩进大小,默认为2
  useTabs: false, // 使用tab缩进,默认false
  semi: false, // 使用分号, 默认true
  singleQuote: true, // 使用单引号, 默认false(在jsx中配置无效, 默认都是双引号)
  quoteProps: 'as-needed', // 仅在需要时在对象属性周围添加引号
  jsxSingleQuote: false, // 单引号
  trailingComma: 'all', // 行尾逗号
  bracketSpacing: true, // 花括号内填充空格 { a: 23 }
  bracketSameLine: false, // 最后的尾尖括号(>)放在同一行还是换行
  arrowParens: 'avoid', // 箭头函数一个参数是否使用括号包裹参数
  eslintIntegration: true, // #让prettier使用eslint的代码格式进行校验
}
eslintrc.js配置项

这部分可变化的空间很大,可繁可简,微信小程序开发的时候还可以加配wxml格式校验,常规vue、wx小程序、egg.js、nuxt.js语法各有不同,在配置的时候,灵活变通文章来源地址https://www.toymoban.com/news/detail-709491.html

vue管理后台(框架带的,配置比较详细,很多内容规定很严格)
module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: [
    'vue-global-api',
    'plugin:vue/vue3-recommended',
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    '@vue/typescript/recommended',
    'plugin:prettier/recommended',
  ],
  parser: 'vue-eslint-parser',
  parserOptions: {
    parser: {
      js: 'espree',
      ts: '@typescript-eslint/parser',
      '<template>': 'espree',
    },
    sourceType: 'module',
    ecmaFeatures: {
      jsx: true,
      tsx: true,
    },
    warnOnUnsupportedTypeScriptVersion: false,
  },
  rules: {
    'no-undef': 'off',
    'no-console': 'off',
    'no-debugger': 'off',
    'prettier/prettier': 'warn',
    'prefer-template': 'error',
    'vue/no-reserved-component-names': 'off',
    '@typescript-eslint/no-this-alias': 'off',
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/no-var-requires': 'off',
    '@typescript-eslint/no-empty-function': 'off',
    '@typescript-eslint/ban-ts-comment': 'off',
    'vue/no-v-html': 'off',
    'vue/html-self-closing': [
      'error',
      {
        html: {
          void: 'any',
          normal: 'any',
          component: 'always',
        },
        svg: 'always',
        math: 'always',
      },
    ],
    // 多字组件名称
    'vue/multi-word-component-names': 'off',
    // Vue.js风格指南(https://cn.vuejs.org/v2/style-guide/)
    // Vue组件排序
    'vue/order-in-components': [
      'warn',
      {
        order: [
          'el',
          'name',
          'key',
          'parent',
          'functional',
          ['delimiters', 'comments'],
          ['components', 'directives', 'filters'],
          'extends',
          'mixins',
          ['provide', 'inject'],
          'ROUTER_GUARDS',
          'layout',
          'middleware',
          'validate',
          'scrollToTop',
          'transition',
          'loading',
          'inheritAttrs',
          'model',
          ['props', 'propsData'],
          'emits',
          'setup',
          'fetch',
          'asyncData',
          'data',
          'head',
          'computed',
          'watch',
          'watchQuery',
          'LIFECYCLE_HOOKS',
          'methods',
          ['template', 'render'],
          'renderError',
        ],
      },
    ],
    // Vue属性排序
    'vue/attributes-order': [
      'warn',
      {
        order: [
          'DEFINITION',
          'LIST_RENDERING',
          'CONDITIONALS',
          'RENDER_MODIFIERS',
          'GLOBAL',
          'UNIQUE',
          'TWO_WAY_BINDING',
          'OTHER_DIRECTIVES',
          'OTHER_ATTR',
          'EVENTS',
          'CONTENT',
        ],
        alphabetical: true, //字母顺序
      },
    ],
  },
  overrides: [
    {
      files: [
        '**/__tests__/*.{j,t}s?(x)',
        '**/tests/unit/**/*.spec.{j,t}s?(x)',
      ],
      env: {
        jest: true,
      },
    },
    {
      files: [
        '**/__tests__/*.{j,t}s?(x)',
        '**/tests/unit/**/*.spec.{j,t}s?(x)',
      ],
      env: {
        jest: true,
      },
    },
  ],
}
微信小程序(自配,同时夹杂对wxml的校验)
module.exports = {
  root: true,
  // 标记当前代码最终的运行环境
  env: {
    es2021: true,
    node: true,
  },
  // 设置多个共享配置
  extends: 'eslint:recommended',
  parserOptions: {
    ecmaVersion: 2021,
    sourceType: 'module',
  },
  overrides: [
    {
      files: ['*.js'],
      rules: {
        'no-unused-vars': 'error',
        'no-console': 'off',
        'generator-star-spacing': 'off', // 强制 generator 函数中 * 号周围使用一致的空格
        // 'no-mixed-operators': 'error', // 禁止混合使用不同的操作符,用括号区分开来
        quotes: [
          // 改双引号为单引号
          'error',
          'single',
          {
            avoidEscape: true, // 允许字符串使用单引号或双引号,只要字符串中包含了一个其它引号,否则需要转义
            allowTemplateLiterals: true, // 允许字符串使用反勾号
          },
        ],
        semi: [
          // 去结尾分号
          2,
          'never',
          {
            beforeStatementContinuationChars: 'never',
          },
        ],
        'no-delete-var': [2],
        'object-curly-spacing': ['error', 'always'], // 强制在花括号中使用一致的空格
        'array-bracket-spacing': ['error', 'never'], // 禁止或强制在括号内使用空格
        'array-bracket-newline': ['error', { multiline: true }], // 强制数组元素间出现换行 (array-element-newline)
        'eol-last': ['error', 'always'], // 要求或禁止文件末尾保留一行空行 (eol-last)
        'func-call-spacing': ['error', 'never'], // 要求或禁止在函数标识符和其调用之间有空格
        'space-before-function-paren': [
          'error',
          {
            anonymous: 'always',
            named: 'never',
            asyncArrow: 'always',
          },
        ], // 要求或禁止函数圆括号之前有一个空格
        indent: ['error', 2], // 强制在对象字面量的键和值之间使用一致的空格
        'key-spacing': ['error', { beforeColon: false }],
        'keyword-spacing': ['error', { before: true }], // 强制关键字周围空格的一致性
        // 'linebreak-style': ['error', 'windows'], // 强制使用一致的换行符风格
        'no-trailing-spaces': 'error', // 禁用行尾空白
        'no-whitespace-before-property': 'error', // 禁止属性前有空白
        'semi-spacing': 'error', // 强制分号前后有空格
        'space-before-blocks': 'error', // 要求或禁止语句块之前的空格
        'space-in-parens': ['error', 'never'], // 禁止或强制圆括号内的空格
        'space-infix-ops': 'error', // 要求中缀操作符周围有空格
        'switch-colon-spacing': 'error', // 强制在 switch 的冒号左右有空格,
        'comma-spacing': ['error', { before: false, after: true }],
        'dot-notation': ['error'], // 强制尽可能地使用点号
        // 'eqeqeq': ['error', 'always'], // 要求使用 === 和 !==
        'no-dupe-keys': 'error', // 禁止对象字面量中出现重复的 key
        'arrow-spacing': 'error', // es6箭头函数空格
      },
    },
    {
      files: ['*.wxml'],
      plugins: ['wxml'],
      // processor: 'wxml/wxml',
      parser: '@wxml/parser',
      rules: {
        'wxml/no-dot-this-in-wx-key': 'error', // 禁止使用this作为key
        'wxml/empty-tag-self-closing': 'error', // 强制空标签自闭合
        'wxml/event-binding-style': ['error', 'no-colon'], // 强制事件绑定样式 colon: bind:tap no-colon bindtap
        'wxml/max-len': 'error', // 设置单行代码最大宽度
        'wxml/no-duplicate-attributes': 'error', // 禁止使用重复的属性
        'wxml/no-inconsistent-tagname': 'error', // 禁止不配对的标签名
        'wxml/no-inline-wxs': 'error', // 禁止使用内联wxs
        'wxml/no-unexpected-string-bool': 'error', // 禁止使用布尔字符串 关键字需要在双引号之内
        'wxml/no-vue-directive': 'error', // 禁止在微信小程序里错误的使用vuejs指令
        'wxml/no-wx-for-with-wx-if': 'error', // 禁止wx:for和wx:if|wx:elseif|wx:else在同一个标签使用
        'wxml/report-wxml-syntax-error': 'error', // 允许提示wxml语法错误
        'wxml/report-wxs-syntax-error': 'error', // 允许提示内联wxs里的js语法错误
        'wxml/wx-key': 'error', // wx:for循环时必须声明wx-key
      },
    },
  ],
  globals: {
    wx: true,
    App: true,
    Page: true,
    getCurrentPages: true,
    getApp: true,
    Component: true,
    requirePlugin: true,
    requireMiniProgram: true,
  },
}
其他,删删减减的,自己看着办吧,如果出现冲突,改其中一个,适配到另一个(prettier和eslint冲突,修改eslint适配prettire或者反过来)
/*
 * Eslint config file
 * Documentation: https://eslint.org/docs/user-guide/configuring/
 * Install the Eslint extension before using this feature.
 */
module.exports = {
  env: {
    es6: true,
    browser: true,
    node: true,
  },
  ecmaFeatures: {
    modules: true,
  },
  parserOptions: {
    ecmaVersion: 2018,
    sourceType: 'module',
    ecmaFeatures: {
      experimentalObjectRestSpread: true,
      modules: true,
      spread: true,
      restParams: true,
    },
  },
  globals: {
    wx: true,
    App: true,
    Page: true,
    getCurrentPages: true,
    getApp: true,
    Component: true,
    requirePlugin: true,
    requireMiniProgram: true,
  },
  extends: 'eslint:recommended',
  rules: {
    'no-unused-vars': 'error',
    'no-console': 'off',
    'generator-star-spacing': 'off', // 强制 generator 函数中 * 号周围使用一致的空格
    // 'no-mixed-operators': 'error', // 禁止混合使用不同的操作符,用括号区分开来
    quotes: [
      // 改双引号为单引号
      'error',
      'single',
      {
        avoidEscape: true, // 允许字符串使用单引号或双引号,只要字符串中包含了一个其它引号,否则需要转义
        allowTemplateLiterals: true, // 允许字符串使用反勾号
      },
    ],
    semi: [
      // 去结尾分号
      2,
      'never',
      {
        beforeStatementContinuationChars: 'never',
      },
    ],
    'no-delete-var': [2],
    'object-curly-spacing': ['error', 'always'], // 强制在花括号中使用一致的空格
    'array-bracket-spacing': ['error', 'never'], // 禁止或强制在括号内使用空格
    'array-bracket-newline': ['error', { multiline: true }], // 强制数组元素间出现换行 (array-element-newline)
    'eol-last': ['error', 'always'], // 要求或禁止文件末尾保留一行空行 (eol-last)
    'func-call-spacing': ['error', 'always'], // 要求或禁止在函数标识符和其调用之间有空格
    indent: ['error', 2], // 强制在对象字面量的键和值之间使用一致的空格
    'key-spacing': ['error', { beforeColon: false }],
    'keyword-spacing': ['error', { before: true }], // 强制关键字周围空格的一致性
    // 'linebreak-style': ['error', 'windows'], // 强制使用一致的换行符风格
    'no-trailing-spaces': 'error', // 禁用行尾空白
    'no-whitespace-before-property': 'error', // 禁止属性前有空白
    'semi-spacing': 'error', // 强制分号前后有空格
    'space-before-blocks': 'error', // 要求或禁止语句块之前的空格
    'space-before-function-paren': ['error', 'always'], // 要求或禁止函数圆括号之前有一个空格
    'space-in-parens': ['error', 'never'], // 禁止或强制圆括号内的空格
    'space-infix-ops': 'error', // 要求中缀操作符周围有空格
    'switch-colon-spacing': 'error', // 强制在 switch 的冒号左右有空格,
    'comma-spacing': ['error', { before: false, after: true }],
    'dot-notation': ['error'], // 强制尽可能地使用点号
    // 'eqeqeq': ['error', 'always'], // 要求使用 === 和 !==
    'no-dupe-keys': 'error', // 禁止对象字面量中出现重复的 key
    'arrow-spacing': 'error', // es6箭头函数空格
  },
}

到了这里,关于vscode编辑器,vue、小程序等语言适配eslint格式校验 + prettier 保存时自动修改格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用VSCode作为Unity的代码编辑器

                    Unity在选择IDE 的时候其实也有很多选择,在 Windows 上我会选择 Visual Studio 或者是 VS Code ,在编程体验上来讲我更喜欢 Visual Studio 。但是在 Mac OS 可能 Visual Studio Mac 版本并非是一个靠谱的选择,它和 Rider 一样都过于笨重,编程体验比较卡顿,于是我还是

    2024年02月08日
    浏览(66)
  • VsCode与Idea编辑器更换背景图

    目录 VsCode Idea VsCode 需要安装background插件 安装完成后,打开设置,搜索background 然后就可以在json文件进行图片设置,透明度等等 Idea 打开File - Settings  然后找到Appearance , 往下滑,找到BackGround Image,点击  然后就会弹出背景设置的弹窗

    2024年02月14日
    浏览(59)
  • Vivado关联Vscode编辑器的各种配置

    1.在vivado工程界面Tool菜单中点击Settings 2.在Text Editor项目栏中打开Current Editor下拉框更换默认的文本编辑器,常用的有Notepad++。这里我们需要更改为VSCode,此时点击下拉框最下方的Custom Editor 3.Editor输入框中输入  C:/Program Files/Microsoft VS Code/Code.exe -g [file name]:[line number]前面加粗部

    2024年02月16日
    浏览(62)
  • Vscode编辑器C/C++环境配置

            VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也

    2024年02月08日
    浏览(62)
  • 前端必备的开发工具推荐——VScode代码编辑器

            VSCode(全称:Visual Studio Code)是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也

    2024年02月02日
    浏览(61)
  • 【vscode编辑器插件】前端 php unity自用插件分享

    “思考是最困难的工作,这也许是为什么很少有人这样做。” - 亨利·福特(Henry Ford) 无论是什么语言,我都会选择使用vscode进行开发,我愿称vscode为万能编辑器,他之所以这么强大,得益于丰富的免费插件市场 vscode插件五花八门,但也不是装越多越好,不必要和垃圾插件

    2024年02月07日
    浏览(60)
  • Python的编辑器VScode中文设置和Hello World

    个人比较常用的用于Python开发的编辑器是VScode,大概的原因应该是免费,且便于项目文件的管理。 VScode中文设置插件及使用方法 VScode下载安装好之后,可以在软件左侧的“扩展”中搜索安装一些插件,用于辅助开发。 个人比较常用的几个VScode插件如下: 1、简体中文插件,

    2024年02月07日
    浏览(53)
  • 使用Vscode 编辑器 导出、导入和运行Excel中的VBA代码

    前言 Excel自带的 Microsoft Visual Basic for Applications 编辑器常被人称为上古编辑器,的确不适合代码编辑,这是其一,其二是当系统语言与Excel的安装语言不一致时,往往出现乱码,看起来极不舒服,这时又需要更改系统语言,所以往往需要探索其他的VBA开发编辑器,经过一番探索

    2024年02月04日
    浏览(144)
  • vscode编辑器如何显示.git隐藏文件, vscode不显示git文件怎么办

    我想要设置pre-commit hook ,但是我在vscode项目里创建的时候,发现此文件已存在,想看隐藏文件夹 .git,但是我看不到它,想看隐藏文件夹 .git,此时该怎么办呢? 1. 文件-首选项-设置 2. 搜索 files , 然后去掉 .git的配置 或者打开setting.json, 配置 3. 我们可以看到,此时.git 文件已经显

    2024年02月10日
    浏览(49)
  • git实战—Gerrit配置SSH key & 下载代码到本地 & 使用VScode编辑器编辑提交代码——2023.07

    centos7 部署Gerrit Windows10 部署gitbash 2.41 版本 首先在虚拟机上搭建Gerrit服务,在Windows上部署好gitbash;其次,配置 publishkey 连接Gerrit仓库;最后使用git clone下载代码到本地,再使用VScode编辑提交代码带仓库。 当然,直接使用VScode连接Gerrit也是可以的,但由于VScode终端中的命令不

    2024年02月09日
    浏览(97)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包