本学习笔记基于讲师 qbaty 的《webpack深入于实战》,视频地址:链接
-
node中调用webpack:
webpack({ //配置 }, callback);
-
entry 3种写法: 传对象方式要给filename使用占位符,[hash]/[name]/[chunkhash]
- hash -- 单次打包的哈希值
- chunkhash -- 相当于文件版本号
- 使用 html-webpack-plugin 将打包后的资源文件引入html模板。
- 安装:
npm install html-webpack-plugin --save-dev
- 参数配置
new htmlWebpackPlugin({ // filename 指定输出的html文件名 // template 指定所使用的html模板 // inject 插入的位置 head / body // minify 压缩参数 // . // . })
- html调用
引用之后的路径只有webpack配置选项output中的filename参数,想要使用完整线上路径,应该在output中添加publicPath参数。
// 指定位置引用打包文件 <%= htmlWebpackPlugin.files.chunks['name'].entry %>output: { path: './dist', filename: 'js/[name].js', publicPath: 'http://cdn.com/' } - minify选项配置
minify: { removeComments: true, collapseWhitespace: true // . // . }
- 在plugins选项多次实例htmlWebpackPlugin,并添加相应配置信息(以下内容简称配置)以实现多页面输出:
plugins: { new htmlWebpackPlugin({// 配置}), new htmlWebpackPlugin({// 配置}), // . // . }- 配置中的「filename」指定输出的html文件名;
- 配置中的「chunks」指定要引入的chunk;
- 配置中的「excludeChunks」指定不引入的chunk;
- 为了减少js等资源文件的http请求,通过inline的形式将文件内容嵌入到页面当中。
并将其他文件循环输出。
// 利用webpack源码的方法在html文件中写入如下代码 <script> <%= compilation.assets[htmlWebpackPlugin.files.chunks['name'].entry.substr(htmlWebpackPlugin.files.publicPath.length)].source() %> </script><% for (var k in htmlWebpackPlugin.files.chunks) { %> <% if (k != 'main') { %> <script src="<%= htmlWebpackPlugin.files.chunks[k].entry %>"></script> <% } %> <% } %>
学习了如何使html文件引入动态生成的文件,并且使用配置信息使两者一一对应。自定义html,传参,
如何处理资源文件,包括es6转es5,css预处理语言,图片压缩,图片转base64