一、webpack处理HTML内嵌图片
1.处理效果
未使用loader时,会出现路径错误,图片不显示的情况;
经过loader处理后,图片能正常显示
2.安装
命令:cnpm install --save-dev html-loader
3.配置config文件
二、使用sourcemap调试
1.关于sourcemap
Sourcemap是为了解决实际运行代码(打包后的)出现问题时无法定位到开发环境中的源代码的问题。
2. 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 简化为每行一个映射。
3.使用sourcemap调试
(1)js调试
(2)css调试
调试css时需要将压缩css的插件注释掉
Css sourcemap设置
4.devtool选项
三、区分生产环境和开发环境
1.概念
开发环境和生产环境的构建目标差异很大。在开发环境中,我们需要具有强大的、具有实时重新加载或热模块替换能力 和 localhost server。而在生产环境中,我们的目标则转向于关注更小的 bundle,以及资源的优化,以改善加载时间。所以我们通常建议为每个环境编写彼此独立的 webpack 配置。
2.安装
npm install --save-dev webpack-merge
3.配置
(1)拆分文件
在这里我们可以将webpack.config.js拆分为三个文件,分别是webpack.common.conf.js、webpack.dev.conf.js和webpack.prod.conf.js。、
webpack.common.conf.js是放一些我们公用的配置,比如入口entry、出口output、常用loader以及插件等。
webpack.dev.conf.js是在开发环境上的配置,比如devServer配置、模块热替换等方便开发的配置
webpack.prod.conf.js是在生产环境上的配置,比如提取分离css、压缩css和js等
(2)拆分后的文件配置
webpack.common.conf.js
webpack.dev.conf.js
webpack.prod.conf.js
(3)修改script
修改package.json文件中的script
--config可以指定使用的配置文件