Webpack4 升级踩坑指南:让你少走弯路

阅读时长 5 分钟读完

Webpack 是前端开发中不可或缺的工具,它能够将多个模块打包成一个或多个 bundle 文件,同时还能对代码进行压缩、优化、分离等操作。Webpack 的新版本 Webpack4 相比于旧版本带来了更多的功能和优化,但也有一些需要注意的变化和踩坑点。本文将详细介绍 Webpack4 升级所需注意的事项,并提供相应的示例代码。

1. 安装

Webpack4 的安装方式和旧版本没有区别,可以使用 npm 或 yarn 进行安装。

2. 配置

Webpack4 的配置文件与旧版本的有一些不同,主要表现在以下几个方面:

2.1 模式 Mode

Webpack4 新增了一个 Mode 模式,它有两个可选值:development 和 production。这个模式会自动设置一些配置项,例如开启/关闭压缩、优化等。

2.2 压缩 Optimization

Webpack4 新增了一个 Optimization 配置项,用于配置优化选项。其中包括了常见的代码压缩、代码分离、Tree Shaking 等优化功能。

-- -------------------- ---- -------
-------------- - -
  ------------- -
    --------- ----- -- ------
    ------------ -
      ------- --------
      -------- ------
      -------- --
      ---------- --
      ----------------- --
      ------------------- --
      ----------------------- ----
      ----- -----
      ------------ -
        -------- -
          ----- -------------------------
          --------- ---
        --
        -------- -
          ---------- --
          --------- ----
          ------------------- ----
        -
      -
    -
  --
  -- ---
-

2.3 入口 Entry

Webpack4 中,入口配置项可以是一个字符串,也可以是一个对象。

2.4 输出 Output

Webpack4 新增了一个 filename 配置项的占位符 [contenthash],用于在文件名中添加 hash 值,以防止文件缓存问题。同时,chunkFilename 配置项也有了变化。

2.5 Loader

Webpack4 中 Loader 配置项的写法与旧版本相同,但是需要注意的是,一些常用 Loader 的名称也有了变化。例如,原来的 url-loader 现在被替换成了 url-loader/limit

-- -------------------- ---- -------
-------------- - -
  ------- -
    ------ -
      -
        ----- ----------------------
        ---- -
          -
            ------- -------------
            -------- -
              ------ -----
              ----- ----------------------
              ----------- --------
            -
          -
        -
      -
    -
  --
  -- ---
-

3. 插件

Webpack4 中常用的插件基本与旧版本相同,但是需要注意的是,一些插件的名称也有了变化。例如,原来的 UglifyJsPlugin 现在被替换成了 terser-webpack-plugin

4. 总结

Webpack4 相比于旧版本带来了更多的功能和优化,但也有一些需要注意的变化和踩坑点。在升级 Webpack4 时,需要注意模式 Mode、优化 Optimization、入口 Entry、输出 Output、Loader 和插件等方面的变化。本文提供了相应的示例代码,希望能够帮助读者顺利升级 Webpack4。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6515677d95b1f8cacdddb9de

纠错
反馈