什么是webpack
分析项目结构,找到js模块和其他浏览器不能直接运行的扩展语言,打包成合适的格式给浏览器使用 常
见的loader
source-map-loader:额外的map文件,方便调试。image-loader:加载压缩图片 css-loader:模块化,压缩,文件导入,
常见的plugin
mine-css-plugin:分离css文件 happypack:多线程加速编译
loader和plugin的区别
两者都是为了扩展webpack的功能。loader它只专注于转化文件(transform)这一个领域,完成压缩,打包,语言翻译; 而plugin不仅只局限在打包,资源的加载上,还可以打包优化和压缩,重新定义环境变量等
解决问题
预处理,文件转化,热更新
热更新原理
一个是client包建立websocket通信,一个dev-derver接收消息和更新操作,setuo监听文件变化,将编译的文件打包,最后浏览器进行更新
提高构建速度
CommonsChunkPlugin 提取公共代码 删除多余代码 多线程
核心
enter,入口 如./src/index.js output:出口,如./dist loader:模块转换器,按需转换成新内容比如less转css plugin:扩展插件比如html模版
webpack打包原理
读取文件依赖模块分析,对模块解析处理,编译,最后生成js文件