# 性能优化 - 运行

# ESLint

ESLint是一个针对JS的代码风格检查工具,当不满足其要求的风格时,会给予警告或错误

官网:https://eslint.org/

民间中文网:https://eslint.bootcss.com/

# 使用

ESLint通常配合编辑器使用

  1. 在vscode中安装ESLint

该工具会自动检查工程中的JS文件

检查的工作交给eslint库,如果当前工程没有,则会去全局库中查找,如果都没有,则无法完成检查

另外,检查的依据是eslint的配置文件.eslintrc,如果找不到工程中的配置文件,也无法完成检查

  1. 安装eslint

npm i [-g] eslint

  1. 创建配置文件

可以通过eslint交互式命令创建配置文件

由于windows环境中git窗口对交互式命名支持不是很好,建议使用powershell

npx eslint --init

eslint会识别工程中的.eslintrc.*文件,也能够识别package.json中的eslintConfig字段

# 配置

# env

配置代码的运行环境

  • browser:代码是否在浏览器环境中运行
  • es6:是否启用ES6的全局API,例如Promise

# parserOptions

该配置指定eslint对哪些语法的支持

  • ecmaVersion: 支持的ES语法版本
  • sourceType
    • script:传统脚本
    • module:模块化脚本

# parser

eslint的工作原理是先将代码进行解析,然后按照规则进行分析

eslint 默认使用Espree作为其解析器,你可以在配置文件中指定一个不同的解析器。

# globals

配置可以使用的额外的全局变量

{
  "globals": {
    "var1": "readonly",
    "var2": "writable"
  }
}
1
2
3
4
5
6

eslint支持注释形式的配置,在代码中使用下面的注释也可以完成配置

/* global var1, var2 */
/* global var3:writable, var4:writable */
1
2

# extends

该配置继承自哪里

它的值可以是字符串或者数组

比如:

{
  "extends": "eslint:recommended"
}
1
2
3

表示,该配置缺失的位置,使用eslint推荐的规则

# ignoreFiles

排除掉某些不需要验证的文件

.eslintignore

dist/**/*.js
node_modules
1
2

# rules

eslint规则集

每条规则影响某个方面的代码风格

每条规则都有下面几个取值:

  • off 或 0 或 false: 关闭该规则的检查
  • warn 或 1 或 true:警告,不会导致程序退出
  • error 或 2:错误,当被触发的时候,程序会退出

除了在配置文件中使用规则外,还可以在注释中使用:

/* eslint eqeqeq: "off", curly: "error" */
1

https://eslint.bootcss.com/docs/rules/

# bundle analyzer

import $ from "jquery";
$(".red").click(async function() {
  const {chunk} = await import("lodash-es")
  console.log(chunk([1, 3, 4, 67], 2));
});

// webpack.config.js
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const WebpackBundleAnalyzer = require("webpack-bundle-analyzer")
  .BundleAnalyzerPlugin;

module.exports = {
  mode: "production",
  optimization: {
    splitChunks: {
      chunks: "all"
    }
  },
  plugins: [new CleanWebpackPlugin(), new WebpackBundleAnalyzer()]
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
更新时间: 2022年8月21日星期日 19:33