上文咱们对html-webpack-plugin的实例htmlWebpackPlugin进行了遍历分析,讲解了几个经常使用属性( inject, minify )以及自定义属性的添加,本文,咱们继续深刻他的配置选项的探讨.css
1、chunks选项html
这个属性很是有用,能够指定某个页面加载哪些chunk( 如:js文件 )前端
咱们能够用他作多个页面模板的生成. 好比,咱们在实际开发中,作一个博客网站,通常来讲有首页,文章列表页,文章详情页等等,这些页面都有一个特色,都要引入一些公共的js文件以及该页面特有的js文件,好比:webpack
首页( index.html ) 引入 main.js, index.jsweb
文章列表页( list.html ) 引入 main.js, list.jsnpm
文章详情页( detail.html ) 引入 main.js, detail.js性能
传统方式,一个个的打开文件,拷贝修改,若是后期维护,又是一堆文件中,查找,拷贝,修改。很容易出错,并且效率低下,咱们看下webpack是如何提升效率,开启前端工业化开发革命道路网站
webpack.dev.config.js文件代码:ui
var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry : { main : './src/js/main.js', index : './src/js/index.js', list : './src/js/list.js', detail : './src/js/detail.js' }, output : { //__dirname,就是当前webpack.config.js文件所在的绝对路径 path : __dirname + '/dist', //输出路径,要用绝对路径 filename : 'js/[name]-[hash].bundle.js', //打包以后输出的文件名 }, plugins: [ new HtmlWebpackPlugin({ template : './index.html', title : '博客首页-by ghostwu', filename : 'index.html', inject : true, chunks : ['main', 'index'] }), new HtmlWebpackPlugin({ template : './index.html', title : '列表页-by ghostwu', filename : 'list.html', inject : true, chunks : ['main', 'list'] }), new HtmlWebpackPlugin({ template : './index.html', title : '文章详情页-by ghostwu', filename : 'detail.html', inject : true, chunks : ['main', 'detail'] }) ] };
而后在src的js目录下面,建立main.js, index.js,list.js,detail.js文件,执行打包( npm run d )就会在dist下面生成3个文件,各自引入到各自的js文件,下次要维护的时候,只要修改这个配置文件,再次打包就能够了,是否是很方便spa
2、excludeChunks选项
这个很好理解,就是有不少chunks,排除不要加载的
webpack.dev.config.js文件代码:
var HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry : { main : './src/js/main.js', index : './src/js/index.js', list : './src/js/list.js', detail : './src/js/detail.js' }, output : { //__dirname,就是当前webpack.config.js文件所在的绝对路径 path : __dirname + '/dist', //输出路径,要用绝对路径 filename : 'js/[name]-[hash].bundle.js', //打包以后输出的文件名 }, plugins: [ new HtmlWebpackPlugin({ template : './index.html', title : '博客首页-by ghostwu', filename : 'index.html', inject : true, excludeChunks : ['list','detail'] }), new HtmlWebpackPlugin({ template : './index.html', title : '列表页-by ghostwu', filename : 'list.html', inject : true, excludeChunks : ['index','detail'] }), new HtmlWebpackPlugin({ template : './index.html', title : '文章详情页-by ghostwu', filename : 'detail.html', inject : true, excludeChunks : ['list','index'] }) ] };
把配置文件修改以后,再用npm run d执行一次打包,跟使用chunks的效果是同样的
三,把页面src引入文件的方式,改为用script标签嵌入的方式,减小http请求( 提升加载性能)
要达到这个目的,咱们再安装一个插件html-webpack-inline-source-plugin
安装:npm install --save-dev html-webpack-inline-source-plugin
webpack.dev.config.js文件代码:
var HtmlWebpackPlugin = require('html-webpack-plugin'); var HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); module.exports = { entry : { main : './src/js/main.js', index : './src/js/index.js', list : './src/js/list.js', detail : './src/js/detail.js' }, output : { //__dirname,就是当前webpack.config.js文件所在的绝对路径 path : __dirname + '/dist', //输出路径,要用绝对路径 filename : 'js/[name]-[hash].bundle.js', //打包以后输出的文件名 }, plugins: [ new HtmlWebpackPlugin({ template : './index.html', title : '博客首页-by ghostwu', filename : 'index.html', inject : true, excludeChunks : ['list','detail'], inlineSource : '.(js|css)$' //所有内嵌 }), new HtmlWebpackInlineSourcePlugin(), new HtmlWebpackPlugin({ template : './index.html', title : '列表页-by ghostwu', filename : 'list.html', inject : true, excludeChunks : ['index','detail'] }), new HtmlWebpackPlugin({ template : './index.html', title : '文章详情页-by ghostwu', filename : 'detail.html', inject : true, excludeChunks : ['list','index'] }) ] };
执行npm run d打包命令以后,就会把dist/index.html文件的js和css改为内嵌方式