详解用Webpack与Babel配置ES6开发环境

yizhihongxing

详解用Webpack与Babel配置ES6开发环境

引言

Webpack 和 Babel 都是现代前端工程开发中不可或缺的工具。Webpack 可以对项目进行打包,并提供丰富的 loader 和 plugin,而 Babel 则可以将 ES6 以上版本的代码转换为可以在各种浏览器中运行的 ES5 代码。本文将详细介绍如何通过 Webpack 和 Babel 配置 ES6 开发环境。

步骤

1. 安装Webpack和Babel

使用以下命令安装 Webpack 和 Babel:

npm install webpack webpack-cli babel-loader @babel/core @babel/preset-env --save-dev

其中,webpackwebpack-cli 是 Webpack 的核心依赖,babel-loader 是 Webpack 的 loader,@babel/core@babel/preset-env 则是 Babel 的核心依赖。

2. 配置Webpack

在项目根目录下创建一个 webpack.config.js 文件,并添加以下代码:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  entry: './src/index.js',

  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },

  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
          },
        },
      },
    ],
  },

  plugins: [
    new webpack.ProgressPlugin(),
  ],
};

上述代码中,我们首先引入了 pathwebpack,并将它们导出为一个配置对象。该配置对象中,我们指定了项目入口文件为 ./src/index.js,输出文件为 bundle.js,并且将打包后的文件输出到 dist 目录下。在 module.rules 中,我们添加了一个 babel-loader 的配置,用于将 ES6+ 代码转换为可执行的 ES5 代码。

3. 配置Babel

在项目根目录下创建一个 .babelrc 文件,并添加以下代码:

{
  "presets": [
    "@babel/preset-env"
  ]
}

上述代码中,我们使用了 @babel/preset-env,它可以根据项目中使用的 ECMAScript 版本和目标浏览器的版本自动提供所需的 polyfill 和转换。

4. 编写示例代码

./src/index.js 中添加 ES6 代码,示例如下:

const arr = [1, 2, 3];
const arr2 = arr.map(item => item * 2);
console.log(arr2);

5. 打包项目

使用以下命令打包项目:

npx webpack

在打包成功后,会在项目根目录下生成 dist/bundle.js 文件。此时,我们可以使用 script 标签引入 bundle.js 文件,或者使用其他方式将它加载到浏览器中运行。

示例

为了更好地说明上述步骤,以下为两个示例说明。

示例一

在项目根目录下创建一个 package.json 文件,并添加以下内容:

{
  "name": "example-1",
  "version": "1.0.0",
  "description": "Webpack and Babel example",
  "main": "index.js",
  "scripts": {
    "build": "webpack"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.15.0",
    "@babel/preset-env": "^7.15.0",
    "babel-loader": "^8.2.2",
    "webpack": "^5.50.0",
    "webpack-cli": "^4.7.2"
  }
}

在项目根目录下创建一个 src/index.js 文件,并添加以下内容:

const arr = [1, 2, 3];
const arr2 = arr.map(item => item * 2);
console.log(arr2);

在项目根目录下创建一个 .babelrc 文件,并添加以下内容:

{
  "presets": [
    "@babel/preset-env"
  ]
}

在项目根目录下创建一个 webpack.config.js 文件,并添加以下内容:

const path = require('path');
const webpack = require('webpack');

module.exports = {
  entry: './src/index.js',

  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },

  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
          },
        },
      },
    ],
  },

  plugins: [
    new webpack.ProgressPlugin(),
  ],
};

使用以下命令打包项目:

npm run build

在项目根目录下会生成一个 dist/bundle.js 文件,该文件包含了转换后的 ES5 代码。

示例二

在项目根目录下创建一个 package.json 文件,并添加以下内容:

{
  "name": "example-2",
  "version": "1.0.0",
  "description": "Webpack and Babel example",
  "main": "index.js",
  "scripts": {
    "build": "webpack-dev-server",
    "start": "webpack serve --open"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.15.0",
    "@babel/preset-env": "^7.15.0",
    "babel-loader": "^8.2.2",
    "webpack": "^5.50.0",
    "webpack-cli": "^4.7.2",
    "webpack-dev-server": "^4.0.0",
    "html-webpack-plugin": "^5.4.0"
  }
}

在项目根目录下创建一个 src/index.js 文件,并添加以下内容:

const title = 'Hello, World!';
document.write(`<h1>${title}</h1>`);

在项目根目录下创建一个 .babelrc 文件,并添加以下内容:

{
  "presets": [
    "@babel/preset-env"
  ]
}

在项目根目录下创建一个 webpack.config.js 文件,并添加以下内容:

const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/index.js',

  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },

  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /(node_modules)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env'],
          },
        },
      },
    ],
  },

  plugins: [
    new HtmlWebpackPlugin({
      title: 'Webpack and Babel example',
    }),
    new webpack.ProgressPlugin(),
  ],

  devServer: {
    contentBase: path.join(__dirname, 'dist'),
    compress: true,
    port: 9000,
  },
};

使用以下命令启动开发服务器:

npm start

在浏览器中访问 http://localhost:9000,即可看到 Hello, World! 的标题。可以在 ./src/index.js 中修改代码,并实时查看修改后的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解用Webpack与Babel配置ES6开发环境 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • gps坐标(wgs84)转换百度坐标(bd09)python测试

    GPS坐标(WGS84)转换百度坐标(BD09) Python测试 在开发中,我们通常会需要把GPS坐标转换成百度坐标,以便在地图上正确的标注位置信息。本文将介绍如何使用Python实现GPS坐标(WGS84)转换成百度坐标(BD09)的功能。 1. 安装Python第三方库 我们需要安装geohash2和geopy这两个Python库,方便进行坐标转换和计…

    其他 2023年3月28日
    00
  • Mac实用操作技巧(二)

    Mac实用操作技巧(二) 本文将为您提供Mac实用操作技巧(二)的完整攻略,包括Mac快捷键、Finder的使用技巧、以及两个示例说明。 Mac快捷键 Mac快捷键是Mac OS X操作系统中的一种快捷键,可以帮助用户更快地完成一些常用的操作。以下是一些常用的Mac快捷键: Command + C:复制选中的内容。 Command + V:粘贴复制的内容。 …

    other 2023年5月6日
    00
  • iOS10 Beta8怎么样?苹果iOS10开发者预览版Beta8上手评测

    iOS10 Beta8怎么样? 介绍 iOS10是苹果公司最新的操作系统。作为一款备受期待的操作系统,它拥有许多新功能和性能提升。iOS10已经发布了多个Beta版本,其中Beta8是最新的开发者预览版。在本文中,我们将探讨iOS10 Beta8的新功能以及用户体验。 新特性 更好的消息体验:iOS10之前,消息应用只能接收和发送文本信息。现在,苹果将这一体…

    other 2023年6月26日
    00
  • 关于c#:mscorlib代表什么?

    以下是关于“关于c#:mscorlib代表什么?”的完整攻略,包括mscorlib的含义、作用以及两个示例说明。 mscorlib的含义 mscorlib是C#中的一个核心程序集,它包含了许多基本的类和函数,是C#编程中必不可少的一部分。mscorlib提供了许多基本的功能,例如字符串处理、文件操作、异常处理、线程管理等等。 mscorlib的作用 msco…

    other 2023年5月7日
    00
  • Java构造方法和方法重载详解

    Java构造方法和方法重载详解 在Java中,构造方法和方法重载是面向对象编程中的重要概念。构造方法用于创建对象并初始化其状态,而方法重载允许我们在同一个类中定义多个具有相同名称但参数列表不同的方法。本文将详细介绍Java构造方法和方法重载的概念和用法,并提供示例说明。 构造方法(Constructor) 构造方法是一种特殊的方法,用于在创建对象时初始化对象…

    other 2023年8月6日
    00
  • 通过一个小例子来简单理解C语言中的内存空间管理

    通过一个小例子来简单理解C语言中的内存空间管理 C语言是一种底层的编程语言,它提供了对内存空间的直接控制。理解C语言中的内存空间管理对于编写高效且可靠的程序至关重要。下面通过一个小例子来详细讲解C语言中的内存空间管理。 示例1:变量的内存分配 #include <stdio.h> int main() { int num = 10; printf…

    other 2023年7月31日
    00
  • Win10一周年更新14393.1198累积更新补丁KB4019472下载地址汇总

    Win10一周年更新14393.1198累积更新补丁KB4019472下载地址汇总攻略 Win10一周年更新14393.1198累积更新补丁KB4019472是微软发布的重要更新补丁,它修复了一些安全漏洞和系统稳定性问题。在本攻略中,我们将提供详细的步骤,以获取并安装该补丁。 步骤一:检查系统版本 首先,您需要确认您的系统是否是Win10一周年更新14393…

    other 2023年8月4日
    00
  • C语言深入分析整形数据存储

    C语言深入分析整型数据存储 1. 整型数据存储方式 在C语言中,整形数据可以使用不同的存储方式:有符号数表示正数和负数,无符号数只表示非负数。从存储方式上来讲,整型数据的存储可以分为大端和小端两种方式。 1.1 有符号数的存储 有符号数使用补码表示。最高位表示符号位,0表示正数,1表示负数,剩下的位表示数值。以8位为例,有符号数-1的补码为11111111。…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部