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简介 - 图1

总结

  • Webpack是一个模块加载器,也可以用来运行tasks
  • Webpack依赖于依赖关系图,Webpack遍历源码来构建这个图,然后用依赖图和配置来生成bundles
  • Webpack依赖 loaders plugins, loaders 工作在模块层面,plugins依赖webpack提供的hooks,并且可以访问webpack的执行过程
  • Webpack的配置文件描述了怎么转换图中的资源,以及需要生成怎样的output
  • Hot Module Replacement(HMR) ,无需刷新页面来更新代码,提升了开发体验
  • Webpack可以为文件生成hash

参考

https://survivejs.com/webpack/introduction/