主题:本条博客主要围绕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性能优化——构建效率(一)相关推荐

  1. Webpack性能优化---构建速度

    Webpack性能优化---构建速度 一.优化babel-loader 二.Noparse 三.IgnorePlugin 四.happyPack多进程打包 五.ParallelUglifyPlugin ...

  2. webpack 原理分析与性能优化(2w字精华)

    webpack webpack 最出色的功能之一就是,除了 JavaScript,还可以通过 loader 引入任何其他类型的文件. Webpack 核心概念: Entry(入口):Webpack 执 ...

  3. 深入浅出的webpack构建工具---HappyPack优化构建(九)

    阅读目录 一:什么是HappyPack? 作用是什么? 二:如何在配置中使用HappyPack? 回到顶部 一:什么是HappyPack? 作用是什么? Webpack是允许在NodeJS中的,它是单 ...

  4. git 创建webpack项目_从 0 开始构建 webpack 项目【Webpack Book 翻译】

    在开始之前,请确保你使用的是 Node 的最新版本.至少是最新的 LTS(长期支持)版本,本书的配置基于 LTS 版本所写,你的终端需要有 node 和 npm 命令,Yarn 也是一个不错的选择,也 ...

  5. 时下最流行前端构建工具Webpack 入门总结

    作者:wenjuanrao,腾讯 PCG 前端开发工程师 最近梳理了下以前 webpack 的相关开发经验,整理和总结了一份入门笔记,欢迎大家围观和批评指正. 随着 web 应用越来越复杂和庞大,前端 ...

  6. 项目构建工具--webpack

    什么是webpack Webpack是一个模块打包器(bundler).在Webpack看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理编译打包,它将根据 ...

  7. 深入浅出的webpack构建工具---DllPlugin DllReferencePlugin提高构建速度(七)

    阅读目录 一:什么是DllPlugin 和 DllReferencePlugin?作用是什么? 二:在项目中如何使用 DllPlugin 和 DllReferencePlugin? 三:DllPlug ...

  8. 基于linux服务器的性能分析与优化

    基于linux服务器的性能分析与优化 方面:硬件系统软件网络 现象:系统不稳定相应速度慢 web无法打开打开速度慢 方案:硬件故障更换硬件或升级硬件 系统问题修改系统参数和配置 软件问题修改和升级软件 ...

  9. Linux服务器性能评估与优化--转

    http://www.itlearner.com/article/4553 一.影响Linux服务器性能的因素 1. 操作系统级 Ø       CPU Ø       内存 Ø       磁盘I/ ...

  10. 性能服务器如何放进ppt,Linux服务器性能评估与优化.ppt

    <Linux服务器性能评估与优化.ppt>由会员分享,可在线阅读,更多相关<Linux服务器性能评估与优化.ppt(29页珍藏版)>请在装配图网上搜索. 1.1 南非蚂蚁 20 ...

最新文章

  1. 数独基本规则_数独解题技巧总结
  2. 使用async/await——Nodejs+ExpressJs+Babel
  3. SP2-0618: Cannot find the Session Identifier. Check PLUSTRACE role is enable
  4. java的4种代码块
  5. List中bean某属性值转换为list
  6. SaaS CRM系统存在的五大安全漏洞
  7. rxjs 里的pipe operator
  8. 随机森林做特征重要性排序和特征选择
  9. 【dfs】I Like Matrix!
  10. python 函数例子_Python3函数之例子
  11. [spring源码学习]三、IOC源码——自定义配置文件读取
  12. Windows 网络无法ping通的解决方法
  13. Adsutil.vbs 在脚本攻击中的妙用
  14. 我从别人那里偷学的前端调试小技巧(浏览器篇)
  15. mysql 导出中间 数据_mysql导出数据库几种方法
  16. Maven 安装教程
  17. Neo4j下载和安装
  18. 射频电路设计——传输线理论
  19. 【MySQL 数据库】聚合查询和联合查询操作
  20. 如何对C盘进行扩容重新分区?

热门文章

  1. x11 matlab仿真,基于MATLABSimulink的弹道仿真方法.pdf
  2. python正则表达式思考_Python正则表达式由浅入深(一)
  3. css3探测光圈_一款带光圈阴影的纯CSS3 Instagram图标
  4. JavaScript正则表达式19例(11)
  5. create-react-app+antd+react-css-modules配置
  6. WF不是工作流(后续)
  7. python安装配置教程win10_Python 环境安装教程(Windows 10)
  8. 传奇服务器维护活力值怎么算,电竞传奇活力值怎么补满 电竞传奇快速恢复方法...
  9. 谷歌放弃go_用 Go 实现 Flutter
  10. Linux内核分析:跟踪分析Linux内核的启动过程