# 八.处理 js 语法及校验

# 1.es6 语法转换成 es5

# 安装

yarn add babel babel-loader @babel/core @babel/preset-env -D
1

# webpack.config.js

{
  "test": /\.js$/,
  "use": {
    "loader": "babel-loader",
    "options": {
      "presets": ["@babel/preset-env"]
    }
  }
}
1
2
3
4
5
6
7
8
9

# index.js

let fn = () => {
  console.log("log")
}
fn()
1
2
3
4

# 安装

yarn add @babel/plugin-proposal-class-properties -D
1

# webpack.config.js

{
  "test": /\.js$/,
  "use": {
    "loader": "babel-loader",
    "options": {
      "presets": ["@babel/preset-env"],
      "plugins": ["@babel/plugin-proposal-class-properties"]
    }
  }
}
1
2
3
4
5
6
7
8
9
10

# 安装

yarn add @babel/plugin-proposal-decoreators -D
1

完整代码 (opens new window)

# 2.es7 语法转换成 es5

# 安装

package.json

"dependencies": {
    "@babel/plugin-transform-runtime": "^7.4.0",
    "@babel/polyfill": "^7.4.0",
    "@babel/runtime": "^7.4.2"
  }
1
2
3
4
5

# 文件

1.src/a.js

module.exports = "123"
require("@babel/polyfill")

class B {}
function* gen(params) {
  yield 1
}
console.log(gen().next())

"aaa".includes("a")
1
2
3
4
5
6
7
8
9
10

2.src/index.js

···
require("./a.js");
···
1
2
3

# 配置

webpack.config.js

{
test: /\.js$/,
use: {
    loader: "babel-loader",
    options: {
    presets: ["@babel/preset-env"],
    plugins: [
        ["@babel/plugin-proposal-decorators", { legacy: true }],
        ["@babel/plugin-proposal-class-properties", { loose: true }],
        "@babel/plugin-transform-runtime"
    ]
    }
},
include: path.resolve(__dirname, "src"),
exclude: /node_modules/
},
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 打包

npm run build
1

可以看到 es7 语法转换为 es5 了

# 3.eslint

# 安装

package.json(开发依赖)

···
"eslint": "^5.15.3",
"eslint-loader": "^2.1.2",
···
1
2
3
4

# 文件

eslint 官网下载 eslintrc.json (opens new window)

然后放到根目录下(注意前面加.)

# 配置

webpack.config.js

{
    test: /\.js$/,
    use: {
        loader: "eslint-loader",
        options: {
        enforce: "pre"
        }
    }
},
1
2
3
4
5
6
7
8
9

# 打包

npm run build
1

可以看到有报错的,提示哪里有错误(这个就是 eslint 的错误提示)

完整代码 (opens new window)