Webpack 4 升级指南和注意事项

阅读时长 7 分钟读完

Webpack 是一个非常流行的前端打包工具,它可以将各种资源(如 JavaScript、CSS、图片等)打包成一个或多个文件,以便于在浏览器中使用。Webpack 4 是最新的版本,它与 Webpack 3 相比有许多改进和提升。然而,在升级到 Webpack 4 时需要注意以下几个方面。

1. NPM 包的更新

Webpack 4 需要配合一些新版的 NPM 包使用,因此在升级前需要更新相关的包。以下是一些需要更新的包:

如果以前的项目中使用了 Webpack 3 相关的包,需要先将其删除,才能安装 Webpack 4 相关的包。

2. 配置文件的修改

Webpack 4 的一些参数与 Webpack 3 有所不同,需要对配置文件进行相应的修改。以下是一些常用的修改方法:

2.1 entry 和 output

entry 和 output 是 Webpack 配置文件中最基本的选项,它们用来指定入口和输出文件的路径。在 Webpack 3 中,可以这样配置:

而在 Webpack 4 中,需要使用新的语法:

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

其中,entry 现在是一个对象,而不是一个路径字符串。可以指定多个入口文件,每个文件对应一个输出文件。例如,可以这样配置多个入口文件:

output.filename 支持占位符 [name]、[hash]、[chunkhash] 等,可以将输出文件名与入口文件名对应,避免重名。例如,上面的配置会分别产生 app.js、login.js 和 register.js。

2.2 module.rules

在 Webpack 3 中,使用 module.rules 配置加载器(Loader)来处理不同类型的文件,例如:

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

而在 Webpack 4 中,需要将 rules 改为 rules,使用数组形式:

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

其中,MiniCssExtractPlugin.loader 可以提取 CSS 文件并以link形式加载到HTML中。

2.3 插件的变化

在 Webpack 3 中,使用 plugins 选项配置插件,例如:

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

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

在 Webpack 4 中,插件的使用方式存在以下变化:

  • new webpack.optimize.UglifyJsPlugin() 已经被删除,可以使用 mode: 'production' 来启用压缩。
  • HtmlWebpackPlugin 需要添加 minify 选项来压缩 HTML。

修改后的配置文件如下:

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

3. 性能的优化

Webpack 4 相对于 Webpack 3 在性能上有很大的提升,但也需要进行一些优化,以便更好地使用 Webpack。

3.1 使用 Tree Shaking

Webpack 4 增加了对 ES6 模块语法的支持,可以通过 Tree Shaking 剔除未使用的模块代码。只需要在 package.json 中加入以下配置即可:

3.2 使用 SplitChunksPlugin

如果项目中需要使用大量的第三方依赖库,可以将它们单独打包成一个文件。这样可以减少每个页面的加载时间。Webpack 4 提供了 SplitChunksPlugin 插件来实现这个功能,只需要在配置文件中添加以下选项:

这个配置将会把所有的公共代码打包到 vendors.js 中。

3.3 使用缓存机制

Webpack 4 增加了对缓存的支持,可以通过以下配置启用缓存机制:

这样在重复构建时可以提高速度。

总结

Webpack 4 在许多方面都有所改进,但也需要注意升级过程中需要修改的配置文件和插件,以及如何优化 Webpack 性能。在实际开发中,可以根据项目需要来更改具体的配置。

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

纠错
反馈