Webpack Babel (编译ES6/7)

956 阅读1分钟

我在上一篇文章:【Webpack4 创建项目以及打包一个JS文件】 已经搭建过环境以及创建过项目了。

1、创建一个文件夹 webpack,通过命令行 cd 到该文件夹

$ cd /webpack

2、进行初始化

$ npm init

3、安装 babel

$ npm install -D babel-loader @babel/core @babel/preset-env

4、然后我们新建一个 main.js 以及一个 index.html,跟上一个文章中一样用于测试

5、创建 webpack.config.js 文件,并设置 module 进行处理指定文件

var config = {
  // 入口文件
  entry: {
    main: './main.js'
  },
  // 输出配置
  output: {
    // 输出得到的文件,文件名可以随意写
    filename: 'dzm.js'
  },
  // 模块的加载,这里通过正则表达式去匹配不同后缀的文件名,然后给它们定义不同的加载器
  module: {
    // 在 webpack3.x 中还保留之前版本的 loaders,与 rules 并存都可以使用,在新版中完全移除了 loaders,必须使用 rules。
    // loaders: [ { xxx } ]
    rules: [
      {
        // 文件匹配正则
        test: /\.js$/,
        // 符合匹配规则的文件则使用 use 中指定的框架来处理它
        use: 'babel-loader',
        // 设置指定文件不需要进行匹配处理
        exclude: '/node_module/'
      }
    ]
  }
};
module.exports = config;

6、到这里我们还需要使用 Babel Presets,也就是我们需要处理的 js 文件还得指定按照什么规范处理,上面命令行我们已经一块安装了 @babel/preset-env,现在只需要修改 webpack.config.js 对它进行使用:

var config = {
  // 入口文件
  entry: {
    main: './main.js'
  },
  // 输出配置
  output: {
    // 输出得到的文件,文件名可以随意写
    filename: 'dzm.js'
  },
  // 模块的加载,这里通过正则表达式去匹配不同后缀的文件名,然后给它们定义不同的加载器
  module: {
    // 在 webpack3.x 中还保留之前版本的 loaders,与 rules 并存都可以使用,在新版中完全移除了 loaders,必须使用 rules。
    // loaders: [ { xxx } ]
    rules: [
      {
        // 文件匹配正则
        test: /\.js$/,
        // 符合匹配规则的文件则使用 use 中指定的框架来处理它
        // use: 'babel-loader',
        // 我们现在需要使用 babel-loader 里面的 Babel Presets,这里 use 也可以换成数组 [{ loader: xxx ... }]
        use: {
          // 表示我们使用的是 babel-loader
          loader: 'babel-loader',
          // 并指定使用的参数
          options: {
            // 这里就可以设置指定我们刚才安装的 @babel/preset-env
            // presets: ['@babel/preset-env']
            // 如果我需要给 @babel/preset-env 设置参数的时候则需要这么写
            presets: [
              ['@babel/preset-env', {
                // 这个是 @babel/preset-env 里面的参数,它可以更具指定的目标进行编译跟不编译
                // 它可以指定 browsers 浏览器,指定在什么版本的浏览器需要编译,什么版本的浏览器放弃编译
                targets: {
                  // 可以指定全球占用率大于百分之多少的浏览器需要进行支持,也可以指定主浏览器的最后几个版本进行支持
                  // 这个浏览器的数据其实也是从 【browserslist】 【can i use】这些开源项目上来的, github 上能找到。
                  browsers: ['> 1%', 'last 2 versions']
                  // 也可以指定浏览器 chrome 版本
                  // chrome: '52'
                }
              }]
            ]
          }
        },
        // 设置指定文件不需要进行匹配处理
        exclude: '/node_module/'
      }
    ]
  }
};
module.exports = config;

7、到这里我们就可以进行打包测试了,我们现在需要在之前新建的 main.js 中写一些测试代码:

let func = () => {}
const num = 100
let array = [1, 2, 3, 4]

然后我们通过命令行进行打包使用即可:

$ webpack