webpack4.0打包优化策略整理小结

  

本文介绍了webpack4.0打包优化策略整理小结,分享给大家,具体如下:

  

webapck4新特性介绍——参考资料

  

当前依赖包的版本

  

<人物>  webpack4.0打包优化策略整理小结”>,</p>
  <p> </p>
  <p>, <强> 1.1缩小文件匹配范围(包括/排除)</强> </p>
  <p>通过排除node_modules下的文件从而缩小了装载机加载搜索范围高概率命中文件</p>
  
  <pre类=   模块:{   规则:[   {   测试:/\ . js/美元,   使用:“babel-loader”,   排除:/node_modules/,//排除不处理的目录   包括:路径。解决(__dirname“src”)//精确指定要处理的目录   }   ]   }      

<强> 1.2缓存装载机的执行结果(cacheDirectory)

  

cacheDirectory是装载机的一个特定的选项,默认值是错误的。指定的目录(使用:“babel-loader& # 63; cacheDirectory=cacheLoader ')将用来缓存装载机的执行结果,减少webpack构建时巴别塔重新编译过程。如果设置一个空值(使用:“babel-loader& # 63; cacheDirectory”)或真正的(使用:babel-loader& # 63; cacheDirectory=true)将使用默认的缓存目录(node_modules/.cache/babel-loader),如果在任何根目录下都没有找到node_modules目录,将会降级回退到操作系统默认的临时文件目录。

        模块:{   规则:[   {   测试:/\ . js/美元,   使用:“babel-loader& # 63; cacheDirectory ',//缓存装载机执行结果发现打包速度已经明显提升了   排除:/node_modules/,   包括:路径。解决(__dirname“src”)   }   ]   }      

  

, <强> 2.1优化模块查找路径resolve.modules

  

Webpack的决心。模块配置模块库(即node_modules)所在的位置,在js里出现进口的vue这样不是相对,也不是绝对路径的写法时,会去node_modules目录下找。但是默认的配置,会采用向上递归搜索的方式去寻找,但通常项目目录里只有一个node_modules,且是在项目根目录,为了减少搜索范围,可以直接写明node_modules的全路径;同样,对于别名(别名)的配置,亦当如此:

  

<人物>  webpack4.0打包优化策略整理小结

        const path=要求(“路径”);   函数解决(dir){//转换为绝对路径   返回路径。加入(__dirname dir);   }      解决:{   模块:[//优化模块查找路径   path.resolve (“src”),   path.resolve (node_modules)//指定node_modules所在位置当你进口第三方模块时直接从这个路径下搜索寻找   ]   }      

配置好src目录所在位置后,由于util目录是在src里面所以可以用下面方式引入util中的工具函数

     //main.js      从“util/进口dep1 dep1 ';   从“util/添加”进口增加;      

<强> 2.2的决心。别名配置路径别名

  

创建进口或需要的路径别名,来确保模块引入变得更简单。配置项通过别名来把原导入路径映射成一个新的导入路径此优化方法会影响使用Tree-Shaking去除无效代码

  

例如,一些位于src/文件夹下的常用模块:

        别名:{   公用事业:路径。解决(__dirname ' src/工具/'),   模板:路径。解决(__dirname ' src/模板/')   }      

现在,替换”在导入时使用相对路径”这种方式,就像这样:

        导入实用程序从“. ./. ./工具/工具”,      

你可以这样使用别名:

        导入实用程序从“实用程序/实用程序”;            解决:{   别名:{//别名配置通过别名配置可以让我们引用变的简单   “vue美元”:“vue/dist/vue.common.js ',//美元表示精确匹配   src:解决(src)//当你在任何需要导入src下面的文件时可以从“src/moduleA”进口moduleA src会被替换为解决(src)返回的绝对路径而不需要相对路径形式导入   }   }      

也可以在给定对象的键后的末尾添加$,以表示精准匹配:

        别名:{   util:美元解决(src/util/add.js)   }      

这将产生以下结果:

        从“跑龙套”进口Test1;//精确匹配,所以src/util/添加。js被解析和导入   从“util/进口Test2 dep1.js ';//精确匹配,触发普通解析util/dep1.js

webpack4.0打包优化策略整理小结