博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack性能优化方式之dll---webpack.dll.config.js
阅读量:4538 次
发布时间:2019-06-08

本文共 2582 字,大约阅读时间需要 8 分钟。

为什么需要优化

相信使用过webpack的童鞋应该有体会到,在文件相对较庞大时,webpack的构建速度是非常慢的,那这样的话对我们的开发人员来说体验非常不好。

优化的方式

性能优化方式有很多,这里来介绍一下dll,dll是一种最简单粗暴并且极其有效的优化方式,且我的公司项目也是用的这种方式

如何使用dll优化

在用 Webpack 打包的时候,对于一些不经常更新的第三方库,比如 vue,lodash,我们希望能和自己的代码分离开。

对于这种方式优化的项目,一般有两个配置文件,分别是:

1.webpack.config.js2.webpack.dll.config.js

下面以我的公司项目的webpack.dll.config.js为例:

const path = require('path')const webpack = require('webpack');const merge = require('webpack-merge')const ExtractTextPlugin = require('extract-text-webpack-plugin');const utils = require('./utils')const config = require('./config')const dllConfig = {  context: path.resolve(__dirname, '../'),  output: {    path: path.resolve(__dirname, '..', config.build.assetsSubDirectory),    filename: '[name].js',    library: '[name]'  },  entry: {    lib: [      'lodash/assignIn',      'lodash/isPlainObject',      'lodash/isArray',      'lodash/isString',      'axios',      'moment',      'numeral',      'numeral/locales',      'vue/dist/vue.js',      'vue-router',      'jquery',      'url-join',      // 'element-ui',      // 'element-ui/lib/theme-chalk/index.css',      'reset-css'    ],  },  module: {    rules: [{      test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,      loader: "url-loader?limit=10000&mimetype=application/font-woff",      options: {        name: utils.assetsPath('fonts/[name].[ext]')      }    }, {      test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,      loader: "file-loader",      options: {        name: utils.assetsPath('fonts/[name].[ext]')      }    }]  },  plugins: [    new webpack.DllPlugin({      context: __dirname,      path: '.webpack-dll-manifest.json',      name: '[name]',    }),    new webpack.ProvidePlugin({      '$': 'jquery',      'jQuery': 'jquery',      'window.jQuery': 'jquery',      'window.$': 'jquery',    }),    new ExtractTextPlugin('[name].css'),    new webpack.optimize.UglifyJsPlugin({      compress: {        warnings: false,      },    }),  ]}module.exports = merge(dllConfig, {  module: {    rules: utils.styleLoaders({      sourceMap: config.build.productionSourceMap,      extract: true,      usePostCSS: true    })  }})

在执行了webpack --config webpack.dll.config.js命令之后,在dll目录下会生成三个文件:webpack-dll-manifest.json、report.html、lib.js

此命令将axios,lodash/assignIn,vue-router等合并打包为一个名为 lib.js 的静态资源包,同时生成一个 webpack-dll-manifest.json 文件方便对 lib.js 中的模块进行引用。
webpack-dll-manifest.json给各个模块赋予 id 以便引用。
1264710-20190801153744912-430225635.png
在webpack.config.js文件中,添加引用即可

plugins: [    new webpack.DllReferencePlugin({        context: __dirname,        manifest: require('./dll/manifest.json')    })]

转载于:https://www.cnblogs.com/IT123/p/11282791.html

你可能感兴趣的文章
innodb_flush_log_at_trx_commit与sync_binlog理解
查看>>
Python脚本重定向其输出时的编码问题
查看>>
二叉搜索树
查看>>
序列模型(4)----门控循环单元(GRU)
查看>>
-Ubuntu系统下安装srilm工具箱
查看>>
关于python如何输出log
查看>>
angular2模板绑定样式
查看>>
用Go自己实现配置文件热加载功能
查看>>
如何解决U盘装系统后磁盘总容量变小?
查看>>
C#基本数据类型与C++区别
查看>>
CXF添加拦截器和自定义拦截器
查看>>
SmartBear推出新产品LoadComplete
查看>>
d2js 中实现 memcached 共享 session 的过程
查看>>
HightCharts基本图形:折线图、柱状图、饼图
查看>>
Java创建对象过程
查看>>
1005 继续(3n+1)猜想 (25 分)
查看>>
CSS的7种常用的垂直居中的方法
查看>>
BZOJ1001 狼抓兔子
查看>>
iOS开发——检测屏幕旋转
查看>>
js方法随机抽取n个随机数
查看>>