plugin 用于扩展webpack的功能,当然loader也是变相的扩展了webpack ,但是它只专注于转化文件这一个领域,而plugin的功能更加的丰富,而不仅局限于资源的加载。
① 通过npm安装对应的插件。
② 用require导入插件。
③ 在plugins中new插件。
HtmlWebpackPlugin会在打包结束之后自动创建一个index.html, 并将打包好的JS自动引入到这个文件中。
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()]
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
}),
],
https://www.postcss.com.cn/
PostCSS和sass/less不同, 它不是CSS预处理器,PostCSS是一款使用插件去转换CSS的工具,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",
]
}
}
};
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"]
}
}
};
属性:
利用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();
}
}