摘要: Node的版本管理工具 常见的node的版本管理工具有两种N、NVM 但是他们有一个致命的问题就是不支持Windwos 但是NVM延申了一个nvm-windows的版本,他就可以很好的支持windows 安装:nvm-windows 官网: GitHub - coreybutler/nvm-wind 阅读全文
posted @ 2022-10-07 20:24 Mr-Hou88888 阅读(29) 评论(0) 推荐(0) 编辑
摘要: Tapable 要想学会自定义Plugin就要先了解Tapable这个库 在我们的wbpack中有两个非常重要的两个类Compiler和Compilation 他们是通过注入插件的方式,来监听webpack 的所有生命周期 在他们的示例中有很多个hooks,而hooks其实是创建了Tapable库中 阅读全文
posted @ 2022-09-18 00:08 Mr-Hou88888 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 自定义Loader loader就是对模块的源代码进行处理(转换),如css-loader、style-loader等 在上一篇的源代码中我们已经知道了loader是在runLoaders才会去使用loader Loader本质上是一个导出为函数的JavaScript模块 loader runner 阅读全文
posted @ 2022-09-14 19:12 Mr-Hou88888 阅读(255) 评论(0) 推荐(0) 编辑
摘要: Webpack源代码解析 webpack其实也就是一个函数的调用,返回一个Compile的对象,再调用Compile的run方法就可以完成项目的构建 那么我们肯定是先要从webpack这个函数去理解它在构建的过程中都做了些什么 如果我们没有传入callback那么他就会执行else中的代码,首先是c 阅读全文
posted @ 2022-09-13 14:47 Mr-Hou88888 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 一、打包时间的分析 如果我们希望看到每一个loader和plugin消耗的打包时间,可以借助于一个插件:speed-measure-webpakc-plugin 安装:npm i speed-measure-webpack-plugin -D 使用: // 测量打包时间的插件 const Speed 阅读全文
posted @ 2022-06-01 23:07 Mr-Hou88888 阅读(179) 评论(0) 推荐(1) 编辑
摘要: 什么是TreeShaking TreeShaking,是一个术语,表示消除死代码(dead_code) JS的Tree Shaking 对JS进行TreeShaking是源自打包工具rollup这是因为TreeShaking依赖于ESModule的静态语法分析 webpack2正式内置支持了ES20 阅读全文
posted @ 2022-05-20 23:58 Mr-Hou88888 阅读(74) 评论(0) 推荐(0) 编辑
摘要: Terser是一个JS的解析(Parser)、Mangleer(绞肉机)、Compresor(压缩机)的工具 绞肉机如:一个函数 function functionsWithLongNames(){ } 名称很长,那么打包的文件占用的空间就相对大一些,如果经过工具来对代码进行转化,把函数的名称变成 阅读全文
posted @ 2022-05-14 21:18 Mr-Hou88888 阅读(71) 评论(0) 推荐(0) 编辑
摘要: DLL库(不再使用) DLL全称是动态链接库(Dynamic Link Library),是为软件在Windows中实现共享函数库的一种实现方式 webpack中也有内置DLL的功能,它指的是我们可以将可以共享,并且不经常改变的代码,抽取到一个共享的库 整个库在之后编译的过程中,会被引入到其他项目的 阅读全文
posted @ 2022-05-10 22:02 Mr-Hou88888 阅读(48) 评论(0) 推荐(0) 编辑
摘要: shimming是什么 shimming 是一个概念,是某一些功能的统称 shimming(垫片),给我们的代码填充一些垫片来处理一些问题 比如我们现在以来一个第三方的库,这个第三方的库本身依赖lodash,但是默认没有对lodash进行导入(认为全局存在lodash),那么我们就可以通过Provi 阅读全文
posted @ 2022-05-08 21:16 Mr-Hou88888 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 假如我们购买了CDN服务器为我们的网站的访问速度进行优化,那么我们,该如何配置 假如我的CDN为:https://mr-hou88888/cdn/那么publicPath该如何配置 1.配置publicpath output: { path: resolveApp("./build"), filen 阅读全文
posted @ 2022-05-08 19:52 Mr-Hou88888 阅读(45) 评论(0) 推荐(0) 编辑