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

详解用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日

相关文章

  • python将xml转换成json数据

    将XML转换为JSON是一种常见的数据转换方式,可以帮助您在不同的应用程序之间共享数据。Python提供了许多库来处理XML和JSON数据。以下是如何将XML转换为JSON的完整攻略,含两个示例说明。 步骤一:安装所需的库 在Python中将XML转换为JSON,您需要安装xmltodict库。您可以使用以下命令在终端中安装它: pip install xm…

    other 2023年5月9日
    00
  • 合并vector内容

    合并Vector内容 在图形设计中,我们经常会使用矢量图形(Vector Graphics)来制作各类图形和图标,这种图形可以在不失真的情况下进行任意缩放,因此被广泛应用于各类应用中。而为了更方便的使用矢量图形,我们需要对不同的矢量图形进行合并操作,将它们合成为一个图形方便操作。 合并方法 下面,我们介绍几种常用的矢量图形的合并方法。 1. Illustra…

    其他 2023年3月28日
    00
  • DOTA2自定义游戏工具下载和安装教程_DOTA2地图制作方法推荐

    下面是“DOTA2自定义游戏工具下载和安装教程_DOTA2地图制作方法推荐”的完整攻略: DOTA2自定义游戏工具下载和安装教程 下载和安装 步骤一:打开Steam客户端,进入“库”栏目 在Steam客户端中,点击顶部导航栏的“库”按钮,进入游戏选择页面。 步骤二:选择“工具”标签页 在游戏选择页面中,选择顶部导航栏中的“工具”标签页,列出所有的Steam工…

    other 2023年6月25日
    00
  • Android自定义View圆形百分比控件(一)

    Android自定义View圆形百分比控件(一)攻略 简介 在本攻略中,我们将学习如何创建一个自定义的圆形百分比控件,用于显示一个圆形进度条,并根据百分比值进行动态更新。 步骤 步骤一:创建自定义View类 首先,我们需要创建一个自定义的View类,用于绘制圆形进度条。以下是一个示例代码: public class CircleProgressBar ext…

    other 2023年9月6日
    00
  • C语言指针引用数组案例讲解

    C语言指针引用数组案例讲解 案例背景 在C语言的程序中,常常需要使用指针和数组来进行数据操作,而指针可以引用数组,达到遍历数组,修改数组元素等目的。本文将通过两个示例说明指针引用数组的案例,为读者展示指针与数组的配合使用。 示例一:数组的遍历 在C语言程序中,可以使用指针引用数组来遍历数组中的元素。以下代码演示了指针引用数组遍历的实现过程: #include…

    other 2023年6月25日
    00
  • 利用JQuery的load函数动态加载其它页面的内容的实现代码

    利用jQuery的load()函数可以动态的加载其他页面的内容,具体步骤如下: 引入jQuery库 在页面中引入jQuery库文件,可以通过CDN或者本地文件引入,如下所示: <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js">&…

    other 2023年6月25日
    00
  • Vue父组件监听子组件生命周期

    下面是讲解“Vue父组件监听子组件生命周期”的完整攻略。 1. Vue组件生命周期简介 在Vue组件的使用过程中,会经历一系列的生命周期阶段。Vue组件生命周期包含以下几个阶段: beforeCreate:Vue实例被创建之前 created:Vue实例被创建之后 beforeMount:DOM元素被挂载到页面之前 mounted:DOM元素被挂载到页面之后…

    other 2023年6月27日
    00
  • C++分析构造函数与析造函数的特点梳理

    C++分析构造函数与析造函数的特点梳理 构造函数 构造函数是C++中的一个重要概念,它是类中的特殊函数。在创建对象时,构造函数主要用于初始化该对象的各个成员变量,以确保这些变量的初值是合法有效的。 构造函数的特点梳理如下: 构造函数的函数名与类名相同,通常没有返回值; 构造函数可以是无参的,也可以是包含参数的,甚至构造函数也可以多个重载; 实例化对象时构造函…

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