加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Web机能优化: 行使Webpack疏散数据的正确要领

发布时间:2019-03-05 19:15:22 所属栏目:建站 来源:前端小智
导读:拟定向用户提供文件的最佳方法也许是一项棘手的事变。 有许多差异的场景,差异的技能,差异的术语。 在这篇文章中,我但愿给你全部你必要的对象,这样你就可以: 相识哪种文件支解计策最得当你的网站和用户 知道怎么做 按照 Webpack glossary,有两种差异类

以是把 react、lodash、redux、moment 等拆分成差异的文件:

  1. const path = require('path');  
  2. const webpack = require('webpack');  
  3. module.exports = {  
  4.   entry: path.resolve(__dirname, 'src/index.js'),  
  5.   plugins: [  
  6.     new webpack.HashedModuleIdsPlugin(), // so that file hashes don't change unexpectedly  
  7.   ],  
  8.   output: {  
  9.     path: path.resolve(__dirname, 'dist'),  
  10.     filename: '[name].[contenthash].js',  
  11.   },  
  12.   optimization: {  
  13.     runtimeChunk: 'single',  
  14.     splitChunks: {  
  15.       chunks: 'all',  
  16.       maxInitialRequests: Infinity,  
  17.       minSize: 0,  
  18.       cacheGroups: {  
  19.         vendor: {  
  20.           test: /[/]node_modules[/]/,  
  21.           name(module) {  
  22.             // get the name. E.g. node_modules/packageName/not/this/part.js  
  23.             // or node_modules/packageName  
  24.             const packageName = module.context.match(/[/]node_modules[/](.*?)([/]|$)/)[1];  
  25.             // npm package names are URL-safe, but some servers don't like @ symbols  
  26.             return `npm.${packageName.replace('@', '')}`;  
  27.           },  
  28.         },  
  29.       },  
  30.     },  
  31.   },  
  32. }; 

文档将很好地表明这里的大部门内容,可是我将轻微表明一下必要留意的部门,由于它们花了我太多的时刻。

  •  Webpack 有一些不太智慧的默认配置,好比支解输出文件时最多3个文件,最小文件巨细为30 KB(全部较小的文件将毗连在一路),以是我重写了这些。
  •  cacheGroups 是我们界说 Webpack 应该怎样将数据块分组到输出文件中的法则的处所。这里有一个名为 “vendor” 的模块,它将用于从 node_modules 加载的任何模块。凡是,你只需将输出文件的名称界说为字符串。可是我将 name 界说为一个函数(将为每个理会的文件挪用这个函数)。然后从模块的路径返回包的名称。因此,我们将为每个包得到一个文件,譬喻 npm.react-dom.899sadfhj4.js。
  •  NPM 包名称必需是 URL 安详的才气宣布,因此我们不必要 encodeURI 的 packageName。 可是,我碰着一个.NET处事器不能提供名称中带有 @(来自一个限制范畴的包)的文件,以是我在这个代码片断中替代了 @。
  •  整个配置很棒,由于它是一成稳固的。 无需维护 - 不必要按名称引用任何包。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读