webpack5 Css 兼容性处理postcss-loader
创始人
2024-01-22 05:06:57

postcss-loader | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。https://webpack.docschina.org/loaders/postcss-loader/

安装命令

postcss-loader依赖postcss,postcss要做智能预设所以也需要postcss-preset-env所以要三个依赖包

npm i postcss-loader postcss postcss-preset-env -D

webpack.config.js

写的时候要留意放置位置 只有test值为.css的配置项放在css-loader后面其它的css样式配置需要放到 "css-loader",之后与 "xxx-loader",之前

module.exports = {module: {rules: [{test: /\.css$/,use: ['style-loader',// MiniCssExtractPlugin.loader, //单独生成css文件'css-loader',{loader: 'postcss-loader',options: {postcssOptions: {plugins: [['postcss-preset-env', 能解决大多数样式兼容性问题{// 其他选项},],],},},},],},{test: /\.s[ac]ss$/, //a和c结尾的文件都行(sass|scss)use: [// 将 JS 字符串生成为 style 节点MiniCssExtractPlugin.loader,// 将 CSS 转化成 CommonJS 模块"css-loader",{loader: "postcss-loader",options: {postcssOptions: {plugins: ["postcss-preset-env", // 能解决大多数样式兼容性问题],},},},// 将 Sass 编译成 CSS"sass-loader",],
}],},
};

效果发现css3的兼容性并没有改前缀

源代码: 

打包后的代码:

 

 控制兼容性

我们可以在 package.json 文件中添加 browserslist 来控制样式的兼容性做到什么程度。

以下为做到大于IE8的程度

{// 其他省略"browserslist": ["ie >= 8"]
}

 再次打包查看打包后的结果

 

 或者也可以这样写(取最近两个版本的浏览器兼容不需要用到前缀所以没有前缀)

 "browserslist": ["last 2 version", //针对所有浏览器只要最近两个版本"> 1%", //覆盖99%的浏览器"not dead" //去掉弃用的版本]

针对兼容性多个复用进行整合(MiniCssExtractPlugin 为独立打包css)

webpack5 css 处理(提取 Css 成单独文件)MiniCssExtractPlugin_周家大小姐.的博客-CSDN博客webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起,打包后的文件用于在浏览器中使用,但它也能够胜任转换(transform)、打包(bundle)或包裹(package)任何资源(resource or asset)。Css 文件目前被打包到 js 文件中,当 js 文件加载时,会创建一个 style 标签来生成样式。style-loader换成MiniCssExtractPlugin.loader。我们应该是单独的 Css 文件,通过 link 标签加载性能才好。https://blog.csdn.net/qq_40190624/article/details/127862255?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127862255%22%2C%22source%22%3A%22qq_40190624%22%7D

// https://webpack.docschina.org/plugins/mini-css-extract-plugin
const MiniCssExtractPlugin = require("mini-css-extract-plugin");// 获取处理样式的Loaders
const getStyleLoaders = (preProcessor) => {return [MiniCssExtractPlugin.loader, //单独生成css文件"css-loader", //将css资源编译成commonjs的模块到js中{loader: "postcss-loader",options: {postcssOptions: {plugins: ["postcss-preset-env", // 能解决大多数样式兼容性问题],},},},preProcessor,].filter(Boolean); //过滤掉preProcessor为undefined值
};module.exports = {// 入口 (相对路径)entry: "./src/main.js",// 输出output: {// 文件输出路径path: path.resolve(__dirname, "../dist"),// 入口文件打包输出文件名filename: "static/js/main.js",clean: true, //webpack5特性打包前清除上一次打包记录},// 加载器module: {rules: [// loader的配置{test: /\.css$/, //只检测.css文件use: getStyleLoaders(),},{test: /\.less$/,// use与loader的区别,use可以用多个loader;loader只能用一个(loader:'xxxx')use: getStyleLoaders("less-loader"),},{test: /\.s[ac]ss$/, //a和c结尾的文件都行(sass|scss)use: getStyleLoaders("sass-loader"),},// https://webpack.docschina.org/guides/asset-modules/#resource-assets{test: /\.(png|jpe?g|gif|webp|svg)$/, //$匹配结尾,在多行检测中,会匹配一行的结尾type: "asset", //转base64parser: {dataUrlCondition: {maxSize: 10 * 1024, // 小于10kb的图片转为base64,用于减少请求数据,但体积会大一点点},},generator: {// 生成输出的图片名字[hash:10]表示只取前10位// ext:扩展名// query图片参数filename: "static/images/[hash:10][ext][query]",},},{test: /\.(ttf|woff2?|mp3|mp4|avi)$/, //匹配字体图标库或者视频文件type: "asset/resource", //resource对文件原样的输出generator: {//输出media名称filename: "static/media/[hash:10][ext][query]",},},{test: /\.js$/,exclude: /(node_modules)/, //排除node_modules不做js转换处理use: {loader: "babel-loader",// options: {options配置可以写到babel.config.js文件中好维护//   presets: ["@babel/preset-env"],// },},},],},
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
ps局部放大 放大某个部位的图... 软件类学习建议:边看边练习,可以先收藏后学习。一、使用Ctrl快捷键放大:Ctrl + +缩小:Ct...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...