webpack入门学习5(HTML中引入图片、使用sourcemap开发调试、模块热替换)

    科技2022-07-10  94

    HTML中引入图片

                1.处理效果

                               先在index.html中写入一个img标签,src为之前的avatar.jpeg。然后命令行输入npm run start来查看:注意路径后面要加/webpack.html

                               未使用loader时,会出现路径错误,图片不显示的情况。经过loader处理后,图片能正常显示。

                2.安装插件

                             命令行输入:npm install --save-dev html-loader

                3.配置config文件 

     

     

    使用sourcemap调试

                  1.了解sourcemap

                                   sourcemap是为了解决实际运行代码(打包后的)出现问题时无法定位到开发环境中的源代码的问题。比如像下面这样打印出的都显示在同一行里,报错时就不知道哪里错误了。

                2.配置config

                           使用时只需要指定devtool选项就行。

                          devtool选项:

     

                                 

                          5个基本类型:

                                 1.eval

                                         每个模块都使用 eval() 执行,每一个模块后会增加sourceURL来关联模块处理前后的对应关系。如下图:

               

     

     

     

                                         由于会映射到转换后的代码,而不是映射到原始代码(没有从 loader 中获取 source map),所以不能正确的显示行数。因为不需要生成模块的sourcemap,因此打包的速度很快。

                                  2.source-map

                                            source-map会为模块生成独立的soucemap文件。

     

                            

                                           打包后的模块在模块后面会对应引用一个.map文件,同时在打包好的目录下会生成相应的.map文件。如下图:

                                           

     

                                  3.Inline

                                             与source-map不同,增加inline属性后,不会生成独立的.map文件,source map 转换为 DataUrl 后添加到 bundle 中。如下所示:

                                  4.cheap

                                             cheap属性在打包后同样会为每一个模块生成.map文件,但是与source-map的区别在于cheap生成的.map文件会忽略原始代码中的列信息,也不包含loader的sourcemap。

                                  5.module

                                             包含了loader模块之间的sourcemap,将 loader source map 简化为每行一个映射。

    建议开发环境将devtool设置为cheap-module-eval-source-map,而生产环境设置为source-map。

                    3.使用sourcemap调试要注意的地方

                           调试css时需要将压缩css的插件注释掉

                                 

                           Css sourcemap设置:

     

     

    模块热替换

                   1.了解模块热替换

                                模块热替换(HMR - Hot Module Replacement)功能会在应用程序运行过程中替换、添加或删除模块,而无需重新加载整个页面。主要是通过以下几种方式,来显著加快开发速度:

                                             1.保留在完全重新加载页面时丢失的应用程序状态。

                                             2.只更新变更内容,以节省宝贵的开发时间。

                                             3.调整样式更加快速 - 几乎相当于在浏览器调试器中更改样式。

                    2.配置config文件

                     3.其他配置

                                3.1devServer中加入hotOnly表示只有热更新,不会自动刷新页面。

                                          

                                3.2修改js文件时代码不会自动热更新,需加入以下代码可以告诉 webpack 接受更新的模块: 

     

    Processed: 0.065, SQL: 8