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、公共代码都提取了。
打包结果如下:
到此,结束。
为什么要提取公共代码,简单来说,就是减少代码冗余,提高加载速度。
这里要用到两个插件:
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、公共代码都提取了。
打包结果如下:
到此,结束。
相关文章推荐
- 详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
- webpack CommonsChunkPlugin 提取公共代码
- 用webpack的CommonsChunkPlugin提取公共代码的3种方式
- webpack4 系列教程(三): 多页面解决方案--提取公共代码
- webpack提取公共模块-CommonsChunkPlugin
- webpack之公共代码抽取(四)
- webpack提取公共的
- TypeScript【Webpack 打包过】 编译过的代码怎么对源码调试?
- 关于常用路径可在 webpack 中注册以避免代码中过长的引入路径的思考
- 详解webpack打包vue时提取css
- webpack4对第三方库css,项目全局css和vue内联css文件提取到单独的文件(二十二)
- webpack练手项目之easySlide(二):代码分割
- React多页面应用5(webpack生产环境配置,包括压缩js代码,图片转码等)
- 使用webpack打包的后,公共请求路径的配置问题
- webpack2打包vue与Boostrap并进行多页面打包以及公共js部分的提取
- 高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间
- Webpack 代码分离
- 在HTML中的静态包含(HTML中提取公共代码HTML)
- webpack学习笔记(代码分割,按需加载)
- webpack提取库