模板仓库
第一版 scss、webpack-dev-server
第二版 依赖分离,添加hash
在这一版本中,主要将代码与依赖分离,通过hash化后的文件,无论时采用cdn还是mainfest
进行离线缓存,都有非常不错的性能。
踩坑实录
- 使用
mini-css-extract-plugin
代替extract-text-webpack-plugin
提取css代码 - 通过将css, js的hush设置为
contenthash
,来避免css改变导致js的hash
改变,或者js改变导致css的hash
改变
第三版 添加editorconfig与eslint
在这一版本中,并未修改webpack的配置文件,而是添加了eslint
与editorconfig
来管理代码风格。
第四版 开发与生产隔离
问题
在实际项目中操作发现,如果直接将webpack-dev-server
配置到生产模式。会带来一下几个问题。
- 代码变更后,热更新缓慢。
- 丢失
debugger
断点,不利于开发调试。 - 错误堆栈无法重现
我们可以通过一下代码复现此问题,默认项目中已经引用d3
模块。并新建/src/demo.js
文件。
/* /src/demo.js */
import * as d3 from "d3";
export function demo () {
// 注意:这里我们故意写了错误的方法名称`arrt`,应为`attr`
return d3.select("body").arrt("font-size", "14px");
}
我们在src/index.js
文件里引用此方法,并调用。
import { demo } from "./demo";
/* eslint-disable-next-line */
debugger
demo();
chrome报错信息如下图:
代码中设置的debugger
断点已经在打包时,被删去。并且因为代码经过混淆压缩,此时已经很难去定位错误位置。
通过sourceMap
解决错误栈丢失
通过shouceMap
可以快速定位错误位置。
热更新
待续
配置文件注释 —— 最新版
待续