在项目中,一般会散落着各种各样的代码及资源文件,Webpack会根据配置,找到其中的一个文件做为打包的入口,这个文件一般都是JavaScript文件(默认值是./src/index.js),可以通过在 webpack configuration 中配置 entry 属性,来指定一个(或多个)不同的入口起点。

    然后会根据入口文件中的import或者require之类的语句解析推荐出来这个语句所依赖的文件资源模块,然后分别去解析每个资源模块对应的依赖。最后就形成了整个项目中,所有用到文件之间的依赖关系的依赖树。

    有了这个依赖关系树之后,Webpack会递归这个依赖树,然后找到每个节点所对应的资源文件,最后再根据配置文件中的rules属性,找到这个模块所对应的加载器,然后交给对应的加载器去加载这个模块,最后会将加载后的结果,放到bundle.js中,也就是打包结果中(文件输出到dist目录中),也就是整个项目的打包。

    整个过程中,Loader机制是Webpack的核心。

    Loader就是负责资源文件从输入到输出的一个转换,实际上是一种管道的概念,对于同一个资源,可以依次使用多个Loader。通过多个Loader,完成一个功能。