Webpack Babel (编译ES6/7)

简介: Webpack Babel (编译ES6/7)

我在上一篇文章:【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

相关文章
|
2月前
|
前端开发 开发者
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。
在前端开发中,webpack 作为模块打包工具,其 DefinePlugin 插件可在编译时动态定义全局变量,支持环境变量定义、配置参数动态化及条件编译等功能。本文阐述 DefinePlugin 的原理、用法及案例,包括安装配置、具体示例(如动态加载资源、配置接口地址)和注意事项,帮助开发者更好地利用此插件优化项目。
55 0
|
3月前
|
前端开发 JavaScript
webpack 和 babel 实用教程【前端必备】
webpack 和 babel 实用教程【前端必备】
30 0
|
5月前
|
前端开发
【专栏】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
249 3
|
11月前
|
JavaScript 前端开发 数据库
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-3
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
93 0
|
5月前
|
编解码 资源调度 前端开发
Webpack+Babel手把手带你搭建开发环境(内附配置文件)
Webpack+Babel手把手带你搭建开发环境(内附配置文件)
65 0
|
5月前
|
资源调度 前端开发 JavaScript
vue - ES6模块化、promise、webpack打包(所在在学的朋友们先看这篇,看了不吃亏)...
vue - ES6模块化、promise、webpack打包(所在在学的朋友们先看这篇,看了不吃亏)...
|
5月前
|
编解码 JavaScript 前端开发
Node.JS学习 | Babel | webpack | ES6
Node.JS学习 | Babel | webpack | ES6
74 0
|
11月前
|
Web App开发 JavaScript 前端开发
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-2
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
72 0
|
11月前
|
存储 JavaScript 前端开发
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)-1
前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)
74 0
|
28天前
|
JavaScript
webpack打包TS
webpack打包TS
122 60