您的位置:首页 > 编程语言

webpack提取公共代码

2018-04-05 08:40 447 查看
今天学了webpack的提取公共代码。记录一下:
为什么要提取公共代码,简单来说,就是减少代码冗余,提高加载速度。
这里要用到两个插件:
commonChunkPlugin
webpack.optimize.commonsChunkPlugin
配置:plugins:[new webpack.optimize.commonsChunkPlugin(option)]
option里面是一个json,配置如下
options.name: chunk的名称
options.filename: 公用代码打包后的名称
options.minChunks: 可以是数字、函数、特殊字符
options.chunks: 提取代码范围
options.children
options.deepChildren
options.asyne
使用场景:单页面应用,单页面应用+第三方依赖,多页面应用+第三方以来+代码生成
继续创建文件,且npm init初始化



pageA 依赖subPageA,subpageB,lodash

import './subpageA.js';import './subPageB';import * as _ from 'lodash';export default 'pageA';subpageA 依赖moduleA

import './moduleA'export default 'subpageA';subpageB也依赖moduleA

import './moduleA'export default 'subpageB';webpack.config.js配置如下:

var webpack = require('webpack');
var path = require('path');
module.exports = { entry: { pageA: './src/pageA' }, output: { path: path.resolve(__dirname, 'dist'), filename: '[name].bundle.js' }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name:'common', minChunks: 2, // chunks: ['moduleA', 'moduleB'] }) ]}命令行输入webpack打包。
这时候,就会生成文件如下:



这时候公共代码就被打包了。
可是针对多entry单页面是不能打包的,在src中新增加一个pageB
代码如下;

import './subpageA';import './subPageB';import * as _ from 'lodash';
export default 'pageB';

webpack.config.js代码如下

var webpack = require('webpack');var path = require('path');
module.exports = { entry: { pageA: './src/pageA', pageB: './src/pageB', vender: ['lodash'] }, output: { path: path.resolve(__dirname, 'dist'), filename: '[name].bundle.js', chunkFilename: '[name].chunk.js' }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name:'common', minChunks: 2, // 选择提取moduleA和moduleB的公共代码 chunks: ['moduleA', 'moduleB'] }), new webpack.optimize.CommonsChunkPlugin({ name: ['vender', 'mainfest'], minChunks: Infinity }) ]}

这样配置,就可以把第三方的lodash、公共代码都提取了。
打包结果如下:



到此,结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: