作业
webpack 构建流程有哪些环节?
- 初始化参数:webpack会根据命令行输入,webpack.config.js. 以及必要的默认配置。而成最后配置
- 开始编译:根据配置的最终结果会得到一个compiler对象,注册所有的插件。开始监听webpack。
- 确定入口:根据webpack.config.js 文件的entry 入口,开始解析文件构建AST语法树,找出依赖,递。下去
- 编译模块:递归过程中,根据文件类型和loader配置,调用相应的loader对不同的文件做不同的转换处理,在找出该模块,然后递归本步骤。知道所有模块都经过了本步骤的编译处理。
- 编译过程中,有一系列的插件在不同在不同的环境做相应的事情。
- 完成编译并输出:递归结束后,得到每个文件结果,包含转换后的模块以及他们之间的依赖关系,根据entry以及outPut等配置成代码块chunk
- 打包完成:根据output 输出多有的chunk到相应目录。
loader和plugin有哪些不同?请描述一下开发loader和plugin的思路
- loader直译为加载器。主要用来解析和检测对应资源文件。一般负责文件的输入到输出。一般用于资源加载。文件处理等等
- Plugin为插件 主要通过webpack钩子机制实现。负责在webpack的不同阶段执行一些额外的操作。她的 插件是一个函数或者包含epply方法的对象。接受一个compiler对象。通过webpackd额钩子机制在某一阶段执行相应的流程
- loader 是通过模块导出的一个函数 默认接受一个souce 即将处理的资源 在函数体内处理资源。return 返回输出
- plugin 是通过钩子实现 插件必须是一个函数或者包含apply方法的对象。通过webpackAPI对资源做处理