npm 包 webpack-blocks 使用教程

阅读时长 10 分钟读完

前言

在现代前端开发中,webpack 成为了一个必不可少的工具,实现了大规模 JavaScript 应用程序的模块化管理和构建打包。同时,npm 上也有许多 webpack 插件和工具,其中 webpack-blocks 包就是一个非常实用的工具。

webpack-blocks 可以说是基于 webpack 配置的一种高度抽象,它将涉及到的 webpack 配置细节封装成小块,预先定义好常见的模式,而且可以以模块化的方式组合并生成一个完整的 webpack 配置。

安装

首先,安装 webpack 和 webpack-blocks:

使用

定义一个普通的 webpack 配置

首先,我们定义一个最基础的 webpack 配置文件 webpack.config.js。在该配置文件中,我们需要定义一个入口文件和一个输出目录。

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

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

引入 webpack-blocks

为了使用 webpack-blocks,我们需要在上述的 webpack 配置文件中引入这个库。

创建基础配置

接下来,我们需要创建一个基础配置块。此基础配置块包含了所有常规的 webpack 配置项。

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

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

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

在这里,我们使用 createConfig() 函数创建了一个基础的 webpack 配置块,并在其中设置了基础的配置信息、编译器和插件。

此 config 中的主要信息包括入口路径,输出目录,模块定义规则,消耗模块规则和输出模块等。此外,我们还添加了 babel-loader,以便在 webpack 打包时转换 ES6 代码。

创建 development 和 production 配置

webpack-blocks 允许轻松实现针对不同环境的基础配置,比如开发和生产环境的区别。我们可以通过在基础配置上为两个不同的环境添加额外的 webpack 配置块,来实现这种切换。

假设我们需要将上面的配置块用于开发和生产环境,我们可以按照以下方式定义两个不同的配置块:devConfigprodConfig

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

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

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

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

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

在这里,我们定义了两个额外的配置块 prodConfigdevConfigprodConfig 用于生产环境,并在 prodConfig 中添加了用于 Sass 的加载器。而 devConfig 用于开发环境,并添加了 source map 来提供更好的开发体验。

我们最终将它们合并到一起以创建一个单一的导出块 module.exports

仅添加外部依赖项的块

在上面的配置文件中,我们后动了原有的配置文件,可能会出现意想不到的错误。要解决这个问题,我们可以创建一个额外的配置块,该块仅包含外部依赖项的安装,我们将其称为 vendorsConfigdllConfig

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

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

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

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

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

在这里,我们定义了 vendors 数组来存储我们想要作为外部库使用的依赖项。

然后我们创建了一个名为 vendorsConfig 的配置块,它利用 Webpack DllPlugin 将 vendors 打包到一个单独的 bundle 中。

最后,我们将 vendorsConfig 添加到我们的主要配置块中,以便在打包期间使用我们要使用的 vendors。

完整示例代码

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

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

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

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

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

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

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

总结

webpack-blocks 的优点在于其使我们能够轻松添加、删除或组合 webpack 配置块,而不需要将所有配置信息都放在一个文件中。这是一种更灵活和可维护的方式,使得我们可以专注于需要实现的具体功能,而不是纠结于配置的实现细节。

希望本篇文章对想使用 webpack-blocks 的读者有帮助,谢谢阅读!

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