服务器webpack构建性能,webpack性能优化——构建效率(一)
主题:本条博客主要围绕webpack提高构建效率,减少打包时间。
一、CDN引入
在项目中,平常会引入一些第三方依赖,类似于echarts、jquery。这样打包后的vendor.js非常大,可以将第三方库以cdn方式引入,也可以将资源下载到服务器引入。
1.webpack配置externals
entry: ... ,
output: ... ,
// 外部引用,不需要打包
externals:{
jquery:‘$‘,
echarts: ‘echarts‘
},
...
2.html中通过script标签引入资源(echarts cdn地址:
3.import引入
4.文件大小和构建速度对比
*使用cdn引入
*未使用cdn
二、优化Loader
loader能够加载资源文件并进行特定处理,所以在查找匹配资源文件时我们可以使用exclude和include缩小搜索范围来优化效率。
{
test: /\.js$/,
loader: ‘babel-loader?cacheDirectory‘,
include: projectRoot,
exclude: /node_modules/
}
三、DllPlugin
DLLPlugin和 DDLReferencePlugin通过拆分 bundles提升构建的速度。可以将特定类库提前打包然后引入。
1.单独新建配置文件webpack.dll.conf.js
const path = require(‘path‘);
const webpack = require(‘webpack‘);
module.exports = {
mode: ‘development‘,
entry: {
// 一般将不经常更新的依赖预先打包
vendor: [‘vue‘,‘vuex‘,‘vue-router‘,‘axios‘]
},
output: {
path: path.resolve(__dirname,‘dist‘),
filename: ‘[name].dll.js‘,
library: ‘_dll_[name]‘
},
plugins:[
new webpack.DllPlugin({
context: __dirname,
// name需要和output内的library保持一致
name: ‘_dll_[name]‘,
// DLLPlugin会生成一个mainfest.json文件,用来将DDLReferencePlugin映射到相关依赖。
path: path.resolve(__dirname, ‘dist‘, ‘mainfest.json‘)
})
]
}
2.webpack.conf.js中配置plugin
new webpack.DllReferencePlugin({
context: __dirname,
manifest: path.resolve(__dirname,‘dist‘,‘mainfest.json‘)
}),
3.使用 webpack --config webpack.config.js 命令打包第三方库(生成以下文件)
4.html中引入打包好的第三方库
在这里可以使用 add-asset-html-webpack-plugin 插件将js添加到html中
四、HappyPack
node是单线程运行,所以webpack打包也是单线程。如果需要webpack同一时间处理多个任务,可以使用HappyPack。HappyPack可以将任务分给多个进程,子进程将处理结果返回给主进程。
1.安装
npm install happypack -D
2.配置
// 1.引入happypack
let HappyPack = require(‘happypack‘)
module.exports = {
entry: ... ,
output: ... ,
mode: ‘production‘,
module:{ // 模块
rules: [
{
test:/\.js$/,
use:{
// 2.修改loader配置
loader:‘happypack/loader?id=happyBabel‘
},
exclude:/node_modules/
},
...
]
},
plugins: [
// 3.plugin添加
new HappyPack({
// 和loader id对应,处理哪类文件
id: ‘happyBabel‘,
// 如何处理,配置内容和loader一致
loaders: [{
loader: ‘babel-loader‘,
query: {
presets:[
[email protected]/preset-env‘
],
plugins:[
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose" : true }],
"@babel/plugin-transform-runtime"
],
}
}]
}),
...
],
}
原文:https://www.cnblogs.com/zhaojingj/p/12741344.html
服务器webpack构建性能,webpack性能优化——构建效率(一)相关推荐
- Webpack性能优化---构建速度
Webpack性能优化---构建速度 一.优化babel-loader 二.Noparse 三.IgnorePlugin 四.happyPack多进程打包 五.ParallelUglifyPlugin ...
- webpack 原理分析与性能优化(2w字精华)
webpack webpack 最出色的功能之一就是,除了 JavaScript,还可以通过 loader 引入任何其他类型的文件. Webpack 核心概念: Entry(入口):Webpack 执 ...
- 深入浅出的webpack构建工具---HappyPack优化构建(九)
阅读目录 一:什么是HappyPack? 作用是什么? 二:如何在配置中使用HappyPack? 回到顶部 一:什么是HappyPack? 作用是什么? Webpack是允许在NodeJS中的,它是单 ...
- git 创建webpack项目_从 0 开始构建 webpack 项目【Webpack Book 翻译】
在开始之前,请确保你使用的是 Node 的最新版本.至少是最新的 LTS(长期支持)版本,本书的配置基于 LTS 版本所写,你的终端需要有 node 和 npm 命令,Yarn 也是一个不错的选择,也 ...
- 时下最流行前端构建工具Webpack 入门总结
作者:wenjuanrao,腾讯 PCG 前端开发工程师 最近梳理了下以前 webpack 的相关开发经验,整理和总结了一份入门笔记,欢迎大家围观和批评指正. 随着 web 应用越来越复杂和庞大,前端 ...
- 项目构建工具--webpack
什么是webpack Webpack是一个模块打包器(bundler).在Webpack看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理编译打包,它将根据 ...
- 深入浅出的webpack构建工具---DllPlugin DllReferencePlugin提高构建速度(七)
阅读目录 一:什么是DllPlugin 和 DllReferencePlugin?作用是什么? 二:在项目中如何使用 DllPlugin 和 DllReferencePlugin? 三:DllPlug ...
- 基于linux服务器的性能分析与优化
基于linux服务器的性能分析与优化 方面:硬件系统软件网络 现象:系统不稳定相应速度慢 web无法打开打开速度慢 方案:硬件故障更换硬件或升级硬件 系统问题修改系统参数和配置 软件问题修改和升级软件 ...
- Linux服务器性能评估与优化--转
http://www.itlearner.com/article/4553 一.影响Linux服务器性能的因素 1. 操作系统级 Ø CPU Ø 内存 Ø 磁盘I/ ...
- 性能服务器如何放进ppt,Linux服务器性能评估与优化.ppt
<Linux服务器性能评估与优化.ppt>由会员分享,可在线阅读,更多相关<Linux服务器性能评估与优化.ppt(29页珍藏版)>请在装配图网上搜索. 1.1 南非蚂蚁 20 ...
最新文章
- 数独基本规则_数独解题技巧总结
- 使用async/await——Nodejs+ExpressJs+Babel
- SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enable
- java的4种代码块
- List中bean某属性值转换为list
- SaaS CRM系统存在的五大安全漏洞
- rxjs 里的pipe operator
- 随机森林做特征重要性排序和特征选择
- 【dfs】I Like Matrix!
- python 函数例子_Python3函数之例子
- [spring源码学习]三、IOC源码——自定义配置文件读取
- Windows 网络无法ping通的解决方法
- Adsutil.vbs 在脚本攻击中的妙用
- 我从别人那里偷学的前端调试小技巧(浏览器篇)
- mysql 导出中间 数据_mysql导出数据库几种方法
- Maven 安装教程
- Neo4j下载和安装
- 射频电路设计——传输线理论
- 【MySQL 数据库】聚合查询和联合查询操作
- 如何对C盘进行扩容重新分区?
热门文章
- x11 matlab仿真,基于MATLABSimulink的弹道仿真方法.pdf
- python正则表达式思考_Python正则表达式由浅入深(一)
- css3探测光圈_一款带光圈阴影的纯CSS3 Instagram图标
- JavaScript正则表达式19例(11)
- create-react-app+antd+react-css-modules配置
- WF不是工作流(后续)
- python安装配置教程win10_Python 环境安装教程(Windows 10)
- 传奇服务器维护活力值怎么算,电竞传奇活力值怎么补满 电竞传奇快速恢复方法...
- 谷歌放弃go_用 Go 实现 Flutter
- Linux内核分析:跟踪分析Linux内核的启动过程