vite + eslint + prettier (粗劣版)

eslint 学习

参考链接:学习链接规则中文对照

eslint演示

  1. 初始化项目:npm init -y
  2. 创建入口文件:index.js
  3. 下载eslint:npm i -g eslint
  4. 初始化eslint:npx eslint --init
  5. 检测index.jseslint index.js
  6. 修复index.jseslint index.js --fix

npm包能够修复,但都是执行完后进行。

vscode的eslint插件就可以一边编写,一边提示和修复。但无法修复代码格式

prettier演示

  1. 还是使用上面的项目

  2. 下载prettiernpm i -D prettier

  3. 修复index.jsnpm prettier --write index.js

    不像eslint只能处理js/ts文件,prettier还可以处理其他文件

  4. 创建.prettierrc的json文件

    {
        "semi": false,
        "singleQuote": true,
    }
    
  5. vscode的eslint插件也可以配置,但.prettierrc.js的权限大于本地的setting配置权限

  6. prettier部分配置会和eslint出现冲突,注意解决

  7. prettier对应的vscode配置详情

    {
        // 使能每一种语言默认格式化规则
        // 后面可以扩展vue,ts等等,也可以不设置文件默认格式化插件
        "[html]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[css]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[less]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[javascript]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[vue]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
    }
    
  8. prettier规则中文对照

    官网链接

    {
        "printWidth": 80, // 超过最大值换行,默认一行80字符
        "tabWidth": 4, // 缩进字节数
        "useTabs": false, // 缩进不使用tab,使用空格
        "semi": true, // 句尾添加分号
        "singleQuote": true, // 使用单引号代替双引号
        "quoteProps": "as-needed", 
        // 对象引入按需加引号,默认as-needed
        "jsxSingleQuote": false,
        // 在jsx中使用单引号代替双引号
        "trailingComma": "all",
        // 在对象或数组最后一个元素后面是否加逗号(全部追加)
        "bracketSpacing": true,
        // 在对象,数组括号与文字之间加空格 "{ foo: bar }"
        "jsxBracketSameLine": false,
        // 在jsx中把'>' 是否单独放一行
        "arrowParens": "always",
        // 箭头函数参数只有一个时是否要有小括号,默认always
        "parser": "babylon",
        // 格式化的解析器,默认babylon
        "proseWrap": "preserve", // 默认preserve。
        "htmlWhitespaceSensitivity": "ignore",
        // 忽视html的空白
        "vueIndentScriptAndStyle": true,
        // 缩进vue样式标签和脚本代码
        "endOfLine": "crlf",
        // 结尾是 \n \r \n\r auto
        "ignorePath": ".prettierignore",
        // 默认.prettierignore
        "stylelintIntegration": false,
        //不让prettier使用stylelint的代码格式进行校验
        "tslintIntegration": false,
        // 不让prettier使用tslint的代码格式进行校验
        "requireConfig": false,
        // Require a 'prettierconfig' to format prettier
    }
    

vscode配置

主要针对 – 工作区vscode的setting.json配置

{
    "[vue]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "[typescript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    },
    "editor.formatOnSave": true,
    // 保存文件时自动格式化代码
    "http.proxyAuthorization": "false",
    "path-intellisense.mappings": {
        "@": "${workspaceRoot}/src"
    },
    // 解析vite定义的别名
}

js-eslint配置

  1. 下载eslint:npm i -D eslint

  2. 初始化eslint:npx eslint --init

  3. 下载安装:

    npm install -D --save-exact prettier
    npm install -D eslint-plugin-prettier eslint-config-prettier
    
  4. 项目根目录创建.prettierrc文件

    {
        "semi": false,
        "singleQuote": true,
        "trailingComma": "es5",
        "endOfLine": "auto"
    }
    
  5. 配置生成的.eslint.js文件

    ...
    extends: ['standard', 'plugin:prettier/recommended'],
    ...
    
  6. 基础plugin:prettier/recommended,就可以把prettier错误抛出,且和eslint不冲突。

ts-eslint配置

  1. 下载typescript:npm i -S-D typescript

  2. 初始化ts配置:tsc --init

  3. 下载eslint:npm i -D eslint

  4. 初始化eslint:npx eslint --init

  5. 下载安装:

    npm install -D --save-exact prettier
    npm install -D eslint-plugin-prettier eslint-config-prettier
    
  6. 项目根目录创建.prettierrc文件

    {
        "semi": false,
        "singleQuote": true,
        "trailingComma": "es5",
        "endOfLine": "auto"
    }
    
  7. 配置.eslint.js

    里面的插件都不需要下载,初始化eslint配置时就安装好了

    // 和上面一样
    extends: [
        'standard-with-typescript',
        'plugin:prettier/recommended'
    ],
    // 配置ts解析
    parserOptions: {
        ecmaVersion: 'latest',
        sourceType: 'module',
        parser: '@typescript-eslint/parser',
        project: './tsconfig.json',
    },
    // 引入ts的eslint插件
    plugins: ['@typescript-eslint'],
    

vue-手动-eslint

  1. 初始化vue项目(官网):npm init vue@latest

  2. 下载依赖:npm i

  3. 下载eslint:npm i -D eslint

  4. 初始化eslint:npx eslint --init

  5. 下载安装:

    // 处理prettier插件
    npm install -D --save-exact prettier
    npm install -D eslint-plugin-prettier eslint-config-prettier
    
    // 解析ts的插件
    npm install -D @vue/eslint-config-typescript
    
  6. 项目根目录创建.prettierrc文件

    {
        "semi": false,
        "singleQuote": true,
        "trailingComma": "es5",
        "endOfLine": "auto"
    }
    
  7. 配置.eslint.js

    ...
    extends: [
        ...,
        '@vue/eslint-config-typescript/recommended', // 解析vue-ts文件
        'plugin:prettier/recommended', // 必须最后一行写
    ],
    parserOptions: {
        ...,
        project: ['./tsconfig.app.json', './tsconfig.config.json'],
        // vue3把tsconfig分成好几个,这两个需要引入解析
        // 具体内容查看tsconfig的refrence
        // https://zhuanlan.zhihu.com/p/402362978
        // 这个咱也不是多很懂,目前这样用了,希望大佬批评指点
    }
    ...
    
  8. 下载运行提示:npm i -D vite-plugin-eslint @types/node

  9. 修改配置vite.config.ts

    import eslintPlugin from 'vite-plugin-eslint'
    
    ...
    plugins: [
        vue(),
        eslintPlugin({
          include: ['src/**/*.js', 'src/**/*.vue', 'src/**/*.ts'],
          exclude: ['./node_modules/**'],
          cache: false,
        }),
    ],
    

vue-cli-eslint

  1. 初始化vue项目(官网):npm init vue@latest

  2. 下载依赖:npm i

  3. 项目根目录创建.prettierrc文件

    {
        "semi": false,
        "singleQuote": true,
        "trailingComma": "es5",
        "endOfLine": "auto"
    }
    
  4. 下载运行提示:npm i -D vite-plugin-eslint @types/node

  5. 修改配置vite.config.ts

    import eslintPlugin from 'vite-plugin-eslint'
    
    ...
    plugins: [
        vue(),
        eslintPlugin({
          include: ['src/**/*.js', 'src/**/*.vue', 'src/**/*.ts'],
          exclude: ['./node_modules/**'],
          cache: false,
        }),
    ],
    

uniApp-vue3-vite

  1. 初始化uni-app项目(官网):npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project

  2. 下载依赖:npm i

  3. 下载eslint:npm i -D eslint

  4. 初始化eslint:npx eslint --init

  5. 下载安装:

    // 处理prettier插件
    npm install -D --save-exact prettier
    npm install -D eslint-plugin-prettier eslint-config-prettier
    
    // 解析ts的插件
    npm install -D @vue/eslint-config-typescript
    
  6. 项目根目录创建.prettierrc文件

    {
        "semi": false,
        "singleQuote": true,
        "trailingComma": "es5",
        "endOfLine": "auto"
    }
    
  7. 配置并改写多个 tsconfig.js

    • tscondig.json

      {
        "files": [],
        "references": [
          {
            "path": "./tsconfig.config.json"
          },
          {
            "path": "./tsconfig.app.json"
          },
        ]
      }
      
    • tsconfig.extend.json

      {
        "compilerOptions": {
          "target": "ESNext",
          "useDefineForClassFields": true,
          "importsNotUsedAsValues": "error",
          "isolatedModules": true,
          "module": "esnext",
          "moduleResolution": "node",
          "noImplicitThis": true,
          "preserveValueImports": true,
          "forceConsistentCasingInFileNames": true,
          "strict": true,
          "jsx": "preserve",
          "sourceMap": true,
          "resolveJsonModule": true,
          "esModuleInterop": true
        }
      }
      
    • tsconfig.app.json

      {
        "extends": "./tsconfig.extend.json",
        "include": ["env.d.ts", "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
        "exclude": ["src/**/__tests__/*"],
        "compilerOptions": {
          "composite": true,
          "baseUrl": ".",
          "paths": {
            "@/*": ["./src/*"]
          },
          "lib": ["esnext", "dom"],
          "types": ["@dcloudio/types"]
        }
      }
      
    • tsconfig.config.json

      {
        "extends": "./tsconfig.extend.json",
        "include": ["vite.config.*", "vitest.config.*", "cypress.config.*"],
        "compilerOptions": {
          "composite": true,
          "types": ["node"],
          "lib": [],
        }
      }
      
  8. 配置.eslint.js

    ...
    extends: [
        ...,
        '@vue/eslint-config-typescript/recommended', // 解析vue-ts文件
        'plugin:prettier/recommended', // 必须最后一行写
    ],
    parserOptions: {
        ...,
        project: ['./tsconfig.app.json', './tsconfig.config.json'],
    }
    ...
    
  9. 下载运行提示:npm i -D vite-plugin-eslint @types/node

  10. 修改配置vite.config.ts

    import eslintPlugin from 'vite-plugin-eslint'
    
    ...
    plugins: [
        vue(),
        eslintPlugin({
          include: ['src/**/*.js', 'src/**/*.vue', 'src/**/*.ts'],
          exclude: ['./node_modules/**'],
          cache: false,
        }),
    ],
    
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值