Webpack 打包时如何自动添加 vendor 前缀

阅读时长 4 分钟读完

什么是 vendor 前缀?

在前端开发中,通常我们需要引入第三方库或框架,比如 jQuery、Bootstrap、React 等等,这些库或框架的 CSS 样式或者 JS 代码难免会与我们自己的代码命名冲突。因此,我们需要给这些库或框架的代码加上一个前缀,目的是让它们的 CSS 样式和 JS 代码与我们自己的代码的命名不会混淆。

通常我们把这个前缀叫做 vendor 前缀。比如将 jQuery 的 CSS 样式添加 vendor 前缀为:.jquery-class{color: red;},这样我们的代码里就可以正常使用 .class。而不会与 jQuery 的 CSS 命名冲突,即使我们的代码中也存在一个 .class,也不会影响原有的样式。

Webpack 如何自动添加 vendor 前缀?

Webpack 作为一个优秀的前端打包工具,自然可以为我们自动添加 vendor 前缀。要实现这个功能,我们可以用到 PostCSS 插件 - autoprefixer,它是一个自动补全 CSS3 前缀的插件,可以帮助我们在构建过程中自动添加 CSS3 前缀和 vendor 前缀。

以下是 Webpack 的配置文件中自动添加 vendor 前缀的配置方法:

  • 安装 autoprefixer:
  • 在 Webpack 的配置文件中添加以下代码:
-- -------------------- ---- -------
-------------- - -
  -- ---
  ------- -
    ------ -
      -- ---
      -
        ----- ---------
        ---- -
          ---------------
          -------------
          -
            ------- -----------------
            -------- -
              -------- -- -- -------------------------
            -
          -
        -
      -
    -
  -
  -- ---
-

上述代码中,我们使用了 postcss-loader,并将 autoprefixer 作为其插件使用。这样打包后的 CSS 文件就会自动添加上对应的 CSS3 前缀和 vendor 前缀了。

常见的 vendor 前缀列表

当然,不同的浏览器的支持情况不一样,我们需要针对项目情况选择合适的前缀。

以下是一些常见的 vendor 前缀:

  • ms(Microsoft Internet Explorer)
  • mso(Microsoft Office API)
  • moz(Mozilla Firefox)
  • o(Opera)
  • webkit(Chrome和Safari)

我们可以在 autoprefixer 提供的浏览器支持列表中进一步选择我们需要的前缀。

总结

Webpack 打包时自动添加 vendor 前缀是一个非常实用的功能,在大型项目中可以有效避免代码命名冲突。只需要在 Webpack 配置文件中添加两行代码就可以实现这个功能,非常简单易懂。在使用时只需要选择合适的前缀,就可以为我们的开发工作提供很大的便利。

示例代码

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

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

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

纠错
反馈