Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Webpack5里好用的插件(—)

Webpack5里好用的插件(—)

作者头像
玖柒的小窝
修改于 2021-10-09 06:16:50
修改于 2021-10-09 06:16:50
1.1K00
代码可运行
举报
文章被收录于专栏:各类技术文章~各类技术文章~
运行总次数:0
代码可运行

介绍

本期给大家在webpack5中如何配置css用到的解析和插件的使用,更准确的说是PostCSS的插件。众所周知,现在大部分前端项目都在使用webpack做打包,打包做解析的比较重要目的一个是给js做转化,比如es6转es5,混淆压缩等。然后就是对css进行解析,比如说scss转css,less转css,前缀自动补全,还有移动端项目px转rem或者px转vw。今天我们就介绍将后者其中的前缀自动补全,px转rem,px转vw,这都是在PostCSS中极为常用的插件。

我们可以看到上图案例,div中的样式,转换成了rem作为单位,并且加了兼容前缀,下来就来讲述怎么实现的。

正文

1. autoprefixer

它是一个自动给css追加前缀的插件,在前端里是最为常用的一个插件,在次之前,可以尝试一下他的效果——官网

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn add -D postcss autoprefixer
// 或者
npm install postcss autoprefixer --save-dev
复制代码

接下来,我们要在postcss-loader里配置插件,注意webpack5这个插件要配置到postcssOptions里,如下代码块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
 // ...
  module: {
    rules: [
      // ...
      {
        test: /\.css$/i,
        use: ["style-loader",
          {
            loader: "css-loader"
          },
          {
            loader: "postcss-loader",
            options: {
              postcssOptions: {
                plugins: [
                  require('autoprefixer')({
                    "overrideBrowserslist": [
                      "> 1%",
                      "last 7 versions",
                      "not ie <= 8",
                      "ios >= 8",
                      "android >= 4.0"
                    ]
                  })
                ]
              }
            }
          }
        ]
      }
    ],
  }
  // ...
}
复制代码

我们可以直接使用,也可以配置其Browserslist,也就是浏览器列表的版本,可以自行按需求修改当前要支持到的版本。

2. postcss-pxtorem

它是一个编译时将css中px单位转化为rem的插件,在移动端开发时也是最为常用的一个插件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn add -D postcss postcss-pxtorem
// 或者
npm install postcss postcss-pxtorem --save-dev
复制代码

接下来,我们要在postcss-loader里配置该插件,如下代码块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
 // ...
  module: {
    rules: [
      // ...
      {
        test: /\.css$/i,
        use: ["style-loader",
          {
            loader: "css-loader"
          },
          {
            loader: "postcss-loader",
            options: {
              postcssOptions: {
                plugins: [
                  require('postcss-pxtorem')({
                    rootValue: 100,
                    selectorBlackList: [".vux-", ".weui-", ".mt-", ".mint-", ".dp-", ".ig-"]
                  })
                ]
              }
            }
          }
        ]
      }
    ],
  }
  // ...
}
复制代码

我们常用的配置一般是:

  • rootValue:代表根元素的字体大小。
  • selectorBlackList:要忽略并保留为 px 的选择器的前缀标识数组,比如很多第三方组件库或者模板不需要你去再转化了,有可能破坏第三方原始样式,就是这个就非常常用的配置项了。
  • propList:可以让css属性px转化为rem的数组,默认是['*'],也是全部属性都可以,当然可以配置不转化的属性,下面将不转换字体间的间距为例: ['*', '!letter-spacing'] 复制代码
  • minPixelValue:设置要替换的最小像素值。
  • exclude:要忽略并保留为 px 的文件路径,正则表达式或者函数都可以传。

当然我们如果要实现rem还是要用一个rem库引入到项目中——amfe-flexible.js

安装amfe-flexible.js:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn add amfe-flexible
// 或者
npm install amfe-flexible -S
复制代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import "amfe-flexible"
import "../assets/style.css"
复制代码

我们这样使用就可以根据视口改变根节点字体大小,从而变成自适应的网页。

3. postcss-px-to-viewport

它是一个编译时将css中px单位转化为vw、vh、vmin、vmax的插件,在移动端开发时也是最为常用的一个插件。

而且项目开发时,可以不需要引入其他的库文件,就可以直接使用。但没中不足的时,国内很多低端机对vw这类单位并不理想,兼容更全面的话可以选择上面的rem。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yarn add -D postcss postcss-px-to-viewport
// 或者
npm install postcss postcss-px-to-viewport --save-dev
复制代码

接下来,我们要在postcss-loader里配置该插件,如下代码块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
 // ...
  module: {
    rules: [
      // ...
      {
        test: /\.css$/i,
        use: ["style-loader",
          {
            loader: "css-loader"
          },
          {
            loader: "postcss-loader",
            options: {
              postcssOptions: {
                plugins: [
                   require("postcss-px-to-viewport")({
                        unitToConvert: "px",	// 需要转换的单位,默认为"px"
                        viewportWidth: 750,   // 视窗的宽度,对应移动端设计稿的宽度
                        // viewportHeight:667,// 视窗的高度,对应的是我们设计稿的高度
                        unitPrecision: 3,		// 单位转换后保留的精度
                        propList: [		// 能转化为vw的属性列表
                            "*"
                        ],
                        viewportUnit: "vw",		// 希望使用的视口单位
                        fontViewportUnit: "vw",		// 字体使用的视口单位
                        selectorBlackList: [],	// 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。
                        minPixelValue: 1,		// 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
                        mediaQuery: false,		// 媒体查询里的单位是否需要转换单位
                        replace: true,		// 是否直接更换属性值,而不添加备用属性
                        exclude: /(\/|\\)(node_modules)(\/|\\)/,		// 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
                    })
                ]
              }
            }
          }
        ]
      }
    ],
  }
  // ...
}
复制代码

我们常用的配置见注释,大致与pxtorem相似。可以对比着去了解。

结语

我们本期介绍完了三个webpack5中postcss的插件,相信如果自己搭建脚手架使用了这些会对你的前端开发效率会有极大提升。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
移动端最佳适配解决方案
移动端rem的适配已经淘汰了,目前大家使用的都是viewport。lib-flexible作者也在github明确地表示lib-flexible这个解决方案可以放弃使用了。
小城故事
2023/02/27
1.5K0
【玩转腾讯云】已有laravel 添加vue
rem适配文档上建议使用lib-flexible,flexible适配的原理是物理像素与逻辑像素的相互转化:物理像素px = window.screen.width(逻辑像素pt) * window.devicePixelRatio
无忧366
2020/02/21
4K0
愈发熟练的 CSS 技巧
rem 相对于根元素 <html> 的 font-size 的大小来计算坐作为一个单位;simple-flexible 是根据手淘团队 lib-flexible.js,比较,改写的一个插件,兼容 UC 竖屏转横屏出现的 BUG,自定义视觉设计稿的宽度:designWidth,设定最大宽度:maxWidth 这里有 simple-flexible 的 Github 地址,下载下来用即可;
落落落洛克
2021/01/08
8900
愈发熟练的 CSS 技巧
前端实现项目中px自动转换rem
文章地址:https://cloud.tencent.com/developer/article/2472716
一起重学前端
2024/12/03
4990
PostCss学习笔记,持续记录
CSS 的隔离主要有两类方案,一类是运行时的通过命名区分,一类是编译时的自动转换 CSS,添加上模块唯一标识。
房东的狗丶
2023/02/17
6710
移动端H5开发之页面适配篇
最近开发并上线了一款H5项目,在这里想和大家分享一下关于项目中使用到的移动端适配技巧,如果对你们有所帮助的话,就多多点赞收藏😃各位看官老爷别着急,在讲页面适配之前,我们先来捋一捋viewport(视口)的概念~在Web浏览器术语中,通常与浏览器窗口相同,但不包括浏览器的UI, 菜单栏等——即指你正在浏览的文档的那一部分。一般我们所说的视口共包括三种:布局视口、视觉视口和理想视口1.1 布局视口图片在移动端,布局视口被赋予一个默认值,大部分为980px,这保证PC的网页可以在手机浏览器上呈现,用户可以手动对网
三点水的洋
2022/06/10
7.8K1
移动端H5开发之页面适配篇
一次讲清移动端适配解决方案—rem和vw
目前移动端的适配方案一般就是两种,一个是rem方案,一个就是vw的方案,本篇就是一次性讲清楚如何去运用这两种方案来解决问题。 panda-vue-template 手把手搭建vue小商城2.0 1、关于rem rem的原理什么的我就不说了,网上搜文章一搜一大把。 一般是使用手淘的lib-flexible.js,但是这个作为一种过渡方案已经被废弃了,目前已不推荐在你的新项目中使用这个方案来解决手机适配问题。 感兴趣可以看看我老早以前写的这篇-->手机适配问题之rem和lib-flexible,我
Ewall
2020/04/01
1.2K0
入门webpack的最佳实践(基于webpack4.X 5.X)-- postcss-loader介绍
来到这家公司之后,一直在使用webpack,也写了不少笔记,但是都比较零散,现在决定整理一下webpack相关的知识点,由浅入深,方便自己后续查漏补缺,后续会一直更新。
Jou
2022/09/27
1.1K0
入门webpack的最佳实践(基于webpack4.X 5.X)-- postcss-loader介绍
使用postcss-plugin-px2rem和postcss-pxtorem(postcss-px2rem)-px自动转换rem的配置方法-vue-cli3.0
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
2.4K0
vue:将px转化为rem,适配移动端vant-UI等框架(postcss-pxtorem)
在安装postcss-pxtorem的时候会生成一个文件.postcssrc.js 在根目录找到.postcssrc.js文件,可以在此配置的基础上根据项目需求进行修改,如:
青梅煮码
2023/02/18
1.6K0
面试官:px、em、rem、vw、rpx 之间有什么区别?
做移动端布局时,希望页面可以做到用户的手机屏幕越大、看见的页面元素就越大。因此,只能使用相对长度单位。
万少
2025/02/11
1910
面试官:px、em、rem、vw、rpx 之间有什么区别?
6、webpack从0到1-less、sass、postcss
参考链接: postcss-loader webpack css-loader
Ewall
2020/03/20
1.2K0
2022-webpack5实战教程
打包成功之后,查看dist目录下的index.html文件是否引用了打包之后的js
gogo2027
2022/10/17
9930
PostCSS 初识
今天在吃早饭的时候就被同事@,说有一块页面效果在测试服务器的部署效果跟本地不一样:代码在本地运行没有问题,部署后发现有一个分割线的位置明显不对。来到公司后看了同事的演示,觉得可能是 css 代码压缩时出现了问题。
李振
2021/11/26
5550
PostCSS 初识
webpack postcss
JavaScript转换样式的工具。让css样式适配不同的浏览器(不用自己去手动的添加了)。
用户4793865
2023/01/12
3870
webpack postcss
CSS-Next : CSS预处理器简单写法的替代者, 想了解下么?
借助相关的插件我们可以把新的特性降级到 css3乃至一些特性降级到css2.1...无缝过渡
CRPER
2018/08/28
1K0
Webpack Loader知识分享
原创不易,未经作者允许禁止转载!! 认识Loader Loader可以用于对模块的源代码进行转换; 在加载这个模块时,webpack其实并不知道如何对其进行加载,我们必须定制对应的loader来完成这个功能。 loader配置方式 内联方式:import "css-loader!../css/index.css"; loader和文件路径用!分隔 配置方式:webpack.config.js 配置方式表示的意思是在我们的webpack.config.js文件中写明配置信息 module.rules中允许我
前端LeBron
2021/12/08
5720
Webpack Loader知识分享
webpack5基础
我们在开发时一般使用框架,vue,react,es6模块化,scss等,这样的代码要想在浏览器运行必须转成浏览器识别的js,css才能运行,所以这时候就需要webpack了。 除此之外,打包工具可以压缩代码,做兼容性处理,提升代码性能等。
zhouzhouya
2023/10/26
3260
webpack5基础
webpack构建自定义vue应用
相比较react,vue所需要的插件要少得多,我们知道在vue中,大多数是以.vue的模版组件,因此关键是我们可以用webpack的相关loader能够解析.vue文件即可,在vue项目中解析单文件组件,热加载,css作用域等全部依赖于这个插件vue-loader[1],因此vue-loader算是vue工程化中必不可少的一个插件。
Maic
2022/07/28
5690
webpack构建自定义vue应用
一文彻底读懂webpack常用配置
const TerserPlugin = require('terser-webpack-plugin');
gogo2027
2022/10/18
5020
相关推荐
移动端最佳适配解决方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验