webpack解决了一个基本的问题“打包”,简化了web开发。它是配置驱动的,功能强大。
Webpack 是基于模块的
webpack能打包的最小的项目有input和output组成,打包过程从entries开始,entries是通过imports连接其他模块的模块。
webpack打包的时候,它遍历所有的imports,构建依赖关系图,然后根据配置生成output。它支持ES2015,CommonJS,AMD模块格式。css-loader支持CSS的@import和url()的加载。还有一些特定任务的插件,如minification,internationalization,HMR等等。
依赖关系图表述了节点之间是怎样相互连接的,在文件之间通过require、import引用。webpack静态的遍历这些文件,生成打包需要的依赖图,但是并不执行这些代码。
Webpack执行过程
总结
- Webpack是一个模块加载器,也可以用来运行tasks
- Webpack依赖于依赖关系图,Webpack遍历源码来构建这个图,然后用依赖图和配置来生成bundles
- Webpack依赖 loaders 和 plugins, loaders 工作在模块层面,plugins依赖webpack提供的hooks,并且可以访问webpack的执行过程
- Webpack的配置文件描述了怎么转换图中的资源,以及需要生成怎样的output
- Hot Module Replacement(HMR) ,无需刷新页面来更新代码,提升了开发体验
- Webpack可以为文件生成hash