webpack

104 阅读1分钟
  • 是什么:本质是一个模块打包器,其工作是将每个模块打包成相应的 bundle
  • 核心概念modeentryoutputloaderplugin
  • 构建流程:初始化、编译、输出,插件(Plugin)随时监听 Webpack 广播并在某些时候调用 API 改变运行结果。
  • entry:指定打包⼊口⽂文件。原本是 string,即一个入口对一个打包文件、object 多对一,array 多对多
  • output:打包后的文件位置
  • loader:翻译官,对不同资源进行处理,从右向左执行
  • plugin:插件,扩展 Webpack 的功能,监听 Webpack 的生命周期,调用 API 改变输出结果。
  • resolve:配置 Webpack 如何寻找模块所对应的文件。resolve.modules/extensions/include/exclude
  • 从 0 开始配置 Webpack
  • 技术选型:移动端|PC、MPA|SPA、HTML|模板引擎、CSS|预处理器、ES5|ES6+、Mock、React|Vue、多人合作|单人项目、ESlint|TSlint、单元测试、提交规范
    • Loader 处理 CSS、Less、Sass
    • Loader 处理图片
    • Loader 处理字体
    • Loader 配置多页面打包(MPA)
    • source map
    • webpack dev server
    • babel
    • react
    • 性能优化
    • 其他:解析器、写 Loader、写 Plugin
    • 懒加载
    • 代码分割code splitting
    • 实现原理:子模块单独打包、借助函数延迟加载
    • Vue 按需加载
    • 热更新
    • 开启方式:配置 devServer,添加热更新插件 HotModuleReplacementPlugin
    • 热更新原理
    • 3 种 hash
    • hash:整个项目只要有文件更改,那就变更
    • chunkhash:某个入口对应的 chunk 进行了变更,那就生成新的 hash 值,不会影响其他 chunk
    • contenthash:对应某个文件内容变更了,才会更换这个文件,生成新的 hash,而不会影响同一个模块下其他文件
    • source map:将编译、打包、压缩后的代码映射回源代码的过程