webpack plugins webpack-html-plugin postcss
创始人
2024-01-22 10:27:46
0

1.Plugin

(1)什么是插件(plugin)

plugin 用于扩展webpack的功能,当然loader也是变相的扩展了webpack ,但是它只专注于转化文件这一个领域,而plugin的功能更加的丰富,而不仅局限于资源的加载。

(2)如何使用插件

① 通过npm安装对应的插件。
② 用require导入插件。
③ 在plugins中new插件。

2.webpack-html-plugin

(1)什么是HtmlWebpackPlugin

HtmlWebpackPlugin会在打包结束之后自动创建一个index.html, 并将打包好的JS自动引入到这个文件中。

(2)HtmlWebpackPlugin使用

https://www.webpackjs.com/plugins/html-webpack-plugin/

安装HtmlWebpackPlugin:

npm install --save-dev html-webpack-plugin

配置HtmlWebpackPlugin:

const HtmlWebpackPlugin = require('html-webpack-plugin');
plugins: [new HtmlWebpackPlugin()]

(3)HtmlWebpackPlugin高级使用-打包多页应用

https://github.com/jantimon/html-webpack-plugin#configuration

默认情况下HtmlWebpackPlugin生成的html文件是一个空的文件,如果想指定生成文件中的内容可以通过配置模板的方式来实现。可以添加多个入口,多个HtmlWebpackPlugin,打包后生成多个html,并且引入不同的js.

 plugins: [new HtmlWebpackPlugin({filename: 'index.html',template: './src/index.html', //配置html模板minify: { collapseWhitespace: true }, //让html文件压缩,title: 'index',chunks: ['index'],  //引入index.js}),new HtmlWebpackPlugin({filename: 'main.html',template: './src/main.html', //配置html模板minify: { collapseWhitespace: true }, //让html文件压缩,title: 'main',chunks: ['main'],  //引入main.js
}),  
],

3.webpack-postcss

(1)什么是PostCSS

https://www.postcss.com.cn/

PostCSS和sass/less不同, 它不是CSS预处理器,PostCSS是一款使用插件去转换CSS的工具,PostCSS有许多非常好用的插件。

(2)使用PostCSS自动补全浏览器前缀

① 安装postcss-loader

npm i -D postcss-loader

② 安装需要的插件

npm i -D autoprefixer

③ 配置postcss-loader
在css-loader or less-loader or sass-loader之前添加postcss-loader
④ 创建postcss-loader配置文件
postcss.config.js

https://github.com/browserslist/browserslist#queries

⑤ 在postcss.config.js配置文件中配置autoprefixer

module.exports = {plugins: {"autoprefixer": {"overrideBrowserslist": [// "ie >= 8", // 兼容IE7以上浏览器// "Firefox >= 3.5", // 兼容火狐版本号大于3.5浏览器// "chrome  >= 35", // 兼容谷歌版本号大于35浏览器,// "opera >= 11.5" // 兼容欧朋版本号大于11.5浏览器,"chrome  >= 36",]}}
};

(3)使用PostCSS自动将px转换成rem

https://www.npmjs.com/package/postcss-pxtorem

① 安装postcss-pxtorem

npm install postcss-pxtorem -D

② 在配置文件中配置postcss-pxtorem

module.exports = {plugins: {"autoprefixer": {"overrideBrowserslist": ["ie >= 8", // 兼容IE7以上浏览器"Firefox >= 3.5", // 兼容火狐版本号大于3.5浏览器"chrome  >= 35", // 兼容谷歌版本号大于35浏览器,"opera >= 11.5" // 兼容欧朋版本号大于11.5浏览器,]},"postcss-pxtorem": {rootValue: 100, // 根元素字体大小// propList: ['*'] // 可以从px更改到rem的属性propList: ["height"]}}
};

属性:

  • rootValue (Number) :root 元素的字体大小。
  • unitPrecision (Number) :允许REM单位增长到的十进制数。
  • propList ( array ) :可以从px更改到rem的属性。
    值需要精确匹配。使用通配符 * 启用所有属性,示例:[‘'];在单词的开头或者结尾使用。( [‘position’] 将匹配 background-position-y );使用 与属性不匹配。! 示例:[’‘,‘letter-spacing’]!,将"非"前缀与其他前缀合并。 示例:[’',‘font*’]!。
  • selectorBlackList ( array ) 要忽略和离开的选择器。
    如果值为字符串,它将检查选择器是否包含字符串。[‘body’] 将匹配 .body-class,如果值为 regexp,它将检查选择器是否匹配正则表达式。[/^body$/] 将匹配 body,但不匹配 .body。
  • replace (Boolean) 替代包含rems的规则,而不是添加回退。
  • mediaQuery (Boolean) 允许在媒体查询中转换 px。
  • minPixelValue (Number) 设置要替换的最小像素值。

4.webpack-图片合并(postcss-sprites)

(1)将打包之后的图片合成精灵图。

(2)如何合并图片

利用postcss-sprites或者webpack-spritesmith都可以合并图片

https://www.npmjs.com/package/postcss-sprites
https://www.npmjs.com/package/webpack-spritesmith

postcss-sprites安装:

npm i postcss-sprites

配置:postcss.config.js:

"postcss-sprites": {// 告诉webpack合并之后的图片保存到什么地方spritePath: "./bundle/images",// 告诉webpack合并图片的时候如何分组groupBy: function (image) {// url: '../images/animal/animal1.png',let path = image.url.substr(0, image.url.lastIndexOf("/"));// console.log(path, "!!!!!!");let name = path.substr(path.lastIndexOf("/") + 1);// console.log(name, "!!!!!!!!");return Promise.resolve(name);},//如何过滤图片filterBy: function (image) {let path = image.url;if(!/\.png$/.test(path)){  //png类型的图片不合并return Promise.reject();}return Promise.resolve();}
}

相关内容

热门资讯

国机汽车:2025年以来制定市... 有投资者在互动平台向国机汽车提问:“董秘您好,贵公司作为一家央企公司股价一直痿摩不振,长期破净长期位...
扬州一店主将10万元中奖彩票给... 记者11日采访了解到,事发1月4日,扬州一彩票店店主朱小姐,接网上彩民微信订购彩票信息,随后打出号码...
柬埔寨警方解救10名中国公民,... 1月12日,中国驻柬埔寨大使馆发文,提醒在柬中国公民不得轻信他人,抵制“高薪”诱惑,切勿偷渡入柬。 ...
原创 关... 大家,注意了!关乎我们每个人“人生最后一程”的大好事来了。2026年1月7日,国务院正式公布了全新修...
*ST天喻(300205)披露... 截至2026年1月12日收盘,*ST天喻(300205)报收于4.88元,较前一交易日下跌1.41%...
我使馆提醒:在柬发生的涉中国公... 1月12日,中国驻柬埔寨使馆通过微信公众号发布领事提醒: 中国驻柬埔寨使馆高度重视保护在柬中国公民...
6800元买的古钱币,多年后同... 封面新闻记者 宋潇 一枚装在鉴定盒中的“康熙通宝”钱币,在某二手平台以6800元成交,结果在买卖双方...
新宁物流:子公司起诉珠海冠宇 ... 新宁物流公告,2015年12月,深圳新宁仓库发生火灾,因火灾事故引发的一系列案件判决均认定在消防部门...
卓胜微遭遇业绩“滑铁卢”!去年... 据卓胜微(300782)1月12日晚间公告,该公司预计2025年实现营业收入37亿元至37.5亿元,...
中央商场将迎四连亏!资产减值、... 1月12日晚间,中央商场(600280)公告称,经公司财务部门初步测算,预计2025年度归属于上市公...