规范化标准及ESLint使用

2021-01-26  本文已影响0人  翔子丶
为什么需要规范标准
哪里需要规范化标准
实施规范化的方法
ESLint使用

ESlint是最为主流的 JavaScript Lint 工具,用于监测JS代码质量,通过ESLint很容易统一开发者的编码风格,例如缩进、换行、分号等等,并且ESLint可以避免代码中存在的潜在问题,如变量声明未使用等,从而提高代码质量;并且ESLint可以帮助开发者提升编码能力

安装

使用

image-20210124172343450.png

ESLint配置文件解析

module.exports = {
  // 标记代码最终的运行环境,eslint根据环境信息判断成员是否可用
  env: {
    browser: true, // 修改为false,使用document时代码依旧没报错,因为eslint-config-standard下的eslintrc.json文件将document等都设置为全局只读成员,而这里的配置继承了standard,所以这里的设置不会影响,而像alert这种就会收到影响
    es2021: true,
  },
  extends: ['standard'], // 继承共享配置
  parserOptions: {
    // 设置语法解析器,控制是否使用某一个es版本的语法 只是检测语法,而不是检测某个成员是否可用
    ecmaVersion: 12,
  },
  rules: {
    'no-alert': "error"
  }, // 配置eslint规则
  globals: {
    // 额外声明项目中可以使用的全局成员
    'jQuery': 'readonly'
  }
}

ESLint配置注释

如果代码中有用的代码违反了ESLint的检查规范,那么需要通过注释的方式解决,更多解决办法

const str1 = '${name} is a coder' // eslint-disable-line no-template-curly-in-string
console.log(str1)
// 不直接使用eslint-disable-line 因为会屏蔽掉此行中的所有ESLint错误

ESLint结合自动化工具

  1. 首先添加插件gulp-eslint

  2. 修改js文件的操作如下,先进行eslint的检查,在执行babel转换等

    const script = () => {
      return src("src/assets/scripts/*.js", { base: "src" })
        // 在babel处理之前进行ESLint的操作
        .pipe(plugins.eslint())
        .pipe(plugins.eslint().format()) // format()将lint结果输出到控制台 使进程退出时具有错误代码
        .pipe(plugins.eslint().failAfterError()) // lint错误,终止任务
        .pipe(plugins.babel({ presets: ["@babel/preset-env"] }))
        .pipe(dest("temp"))
        .pipe(bs.reload({ stream: true }));
    };
    
  3. 初始化eslint配置文件

  4. yarn gulp script直接运行打包,eslint报错详情

ESLint结合Webpack

  1. 安装eslint和eslint-loader

  2. 在rules中实现eslint检查

    module.exports = {
      ...
      module: {
        rules: [
          {
            test: /\.js$/,
            use: [
              'babel-loader',
              'eslint-loader' // eslint需放在babel之前
            ]
          },
          {
            test: /\.js$/,
            use: 'eslint-loader',
            enforce: 'pre' // 或使用enforce属性指定eslint-loader的执行顺序
          }
        ]
      },
      ...
    }
    
  3. 执行yarn webpack打包过程会执行eslint检验

现代化项目集成ESLint

像Vue和React主流框架,都已经在CLI工具中集成了ESLint,不需要单独配置

创建项目时根据提示选择lint检验即可

ESLint检查TypeScript

在yarn eslint --init的过程中,是否使用Typecript时,选择yes后,会自动安装typeSctipt需要的模块

// .eslintrc.js
module.exports = {
    "env": {
        "browser": true,
        "es2020": true
    },
    "extends": [
        "standard"
    ],
    "parser": "@typescript-eslint/parser", // 使用typescript解析器
    "parserOptions": {
        "ecmaVersion": 11
    },
    "plugins": [
        "@typescript-eslint" // 加载typescript规则,等待被配置后使用
    ],
    "rules": {
    }
}
StyleLint

CSS代码的lint操作,一般使用Stylelint工具

使用步骤

  1. 安装stylelint模块,yarn add stylelint -D

  2. Stylelint没有提供像ESLint一样的--init初始化配置文件的命令,手动创建.stylelintrc.js文件,文件格式和eslintrc.js相同

  3. 通过npm安装stylelint-config-standard和stylelint-config-sass-guidelines模块,注意这里的extends需要使用完整名称

    module.exports = {
      extends: [
        'stylelint-config-standard', // stylelint的推荐配置
        'stylelint-config-sass-guidelines', // sass代码进行stylelint
      ],
    }
    
  4. yarn stylelint src/.css --fix或yarn stylelint src/.scss --fixs检验css代码,需要注意用/而不是\,否则会报以下错误

    image-20210125103503997.png
Prettier的使用

Prettier是近几年使用频率特别高的通用的前端代码格式化工具,几乎可以完成所有类型代码的格式化工作

安装使用:

  1. 安装prettier,yarn add prettier --dev,会在node_module/.bin目录生成cli程序
  2. 通过yarn prettier xxx --write,不加--write会将格式化的代码输出到控制台,--write会覆盖修改源文件
ESLint结合GIt Hooks

Hook 就是在执行某个事件之前或之后进行一些其他额外的操作

通过lint工具确保代码规范的落地,但是也会有遗漏。比如有人未使用lint工具,就将代码提交到远程仓库

相比约定,通过Git Hooks在代码提交前强制lint会更好一些

yarn remove husky 卸载Husky后会同步删除Husky创建的 Git hooks 钩子

  1. 在项目根目录创建.huskyrc或在package.json中添加配置

    // package.json
    "husky": {
        "scripts": {
            "lint": "eslint ."
          },
        "hooks": {
            "pre-commit": "npm run lint"
        }
    },
    // 或创建.huskyrc文件
    {
        "hooks": {
            "pre-commit": "npm run lint"
        }
    }
    
  2. 执行提交操作,会先进行eslint校验

上一篇 下一篇

猜你喜欢

热点阅读