小记一篇 vuecli4项目 打包内存溢出问题

devtools/2024/10/22 9:38:05/

目录

  • 背景
    • 先解决内存溢出问题 让项目能够打包
    • 打包优化
      • 公共第三方模块 提取出来 不走webpack 打包 , 改成 cdn 引入
      • 项目中使用 图片等 静态资源 全部走cdn
      • 使用thread-loader 开启多线程打包
  • 后序

背景

其他项目组有个项目迭代了3年,突然有一天 vuecli-4 webpack打包出现了 内存溢出!于是紧急协助处理了下。

先解决内存溢出问题 让项目能够打包

将打包内存 扩大到4G

javascript">// package.json
//将内存 扩大到 4G 。"scripts": {"dev": "NODE_OPTIONS=\"--max-old-space-size=4096\" vue-cli-service serve --mode dev","build:uat": "NODE_OPTIONS=\"--max-old-space-size=4096\" vue-cli-service build --mode uat","build:pre": "NODE_OPTIONS=\"--max-old-space-size=4096\" vue-cli-service build --mode pre","build:prd": "NODE_OPTIONS=\"--max-old-space-size=4096\" vue-cli-service build --mode prd","eslint": "eslint --ext .js,.vue src && eslint \"src/**/*.{js,vue}\" --fix","lint": "vue-cli-service lint --fix","prepare": "husky install"}

node 在Linux服务器 单服务v8运行内存 默认最大为1.4G

打包优化

公共第三方模块 提取出来 不走webpack 打包 , 改成 cdn 引入

javascript">// vue.config.jsconfigureWebpack: (config) => {......config.externals = {echarts: "echarts",vue: "Vue",axios: "axios",vuex: "Vuex",'vue-router' : 'VueRouter'}
}
javascript">// index.html
<!--   性能优化:这几个包如果通过webpack打包出来体积太大了,影响首屏加载时间-->
<script src="https://xxxx.com/public/wlc/qywx/utils/echarts.min.js"></script>
<script src="https://xxxx.com/public/wlc/qywx/utils/vue.min.js" ></script>
<script src="https://xxxx.com/public/wlc/qywx/utils/axios.min.js" ></script>
<script src="https://xxxx.com/public/wlc/qywx/utils/vuex.min.js" ></script>
<script src="https://xxxx.com/public/wlc/qywx/utils/vue-router.min.js" ></script>

项目中使用 图片等 静态资源 全部走cdn

图片引用直接用cdn ,不走本地打包

使用thread-loader 开启多线程打包

thread-loader 与 vue-loader 和 babel-loader 结合使用以加速构建过程

javascript">npm i -D thread-loader// vue.config.jschainWebpack(config) {
...
...// 配置 thread-loader 与 vue-loader 结合config.module.rule('vue').use('thread-loader').loader('thread-loader').options({// 为 thread-loader 设置参数,如线程数workers: 3,// 其他可能需要的选项,如缓存// workerParallelJobs: 50,// poolTimeout: 2000,}).end().use('vue-loader').loader('vue-loader').end()// 配置 thread-loader 与 babel-loader 结合config.module.rule('js').exclude.add(/node_modules/).end().use('thread-loader').loader('thread-loader').options({// 保持与 vue-loader 中 thread-loader 的选项一致workers: 3,// 其他可能需要的选项// ...}).end().use('babel-loader').loader('babel-loader').end()}

后序

项目重构成 vue3 多入口页面。多入口对比单入口 有个优势就是每个入口的打包 内存环境都是独立 ,重新计算的。


http://www.ppmy.cn/devtools/6909.html

相关文章

webgl canvas系列——animation中基本旋转、平移、缩放(模拟冒泡排序过程)

文章目录 ⭐前言⭐canvas绘制图片&#x1f496;状态保存和恢复&#x1f496;移动、旋转、缩放、变形&#x1f496;移动绘制一个渐变的box&#x1f496;旋转&#x1f496;缩放 ⭐模拟冒泡排序过程⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享webgl canvas系…

C++ 几句话彻底点通虚表

#include <iostream>using namespace std;class Base { public:virtual void show() // 声明虚函数{cout << "Base" << endl;} };class Derived : public Base { public:void show() override // 覆盖虚函数{cout << "Derived" &l…

如何理解数据库事务

事务的概念起源于数据库系统的设计和实现。在计算机科学领域中&#xff0c;数据库系统被广泛用于存储和管理大量的数据&#xff0c;而事务的概念则是为了解决多用户并发访问数据库时可能出现的一系列问题。 事务的概念最早由 IBM 的科学家 Edgar F. Codd 在 1970 年提出。Codd…

vue+Element-ui实现模板文件下载

最近实现一个功能&#xff0c;数据过多&#xff0c;录入系统的时候过慢&#xff0c;所以新增一个导入数据的功能。 导入数据的话&#xff0c;为了防止用户随意输入&#xff0c;或者不知道怎么输入&#xff0c;所以特完成模板下载功能。 通常情况下实现模板下载采用a标签即可实现…

mac jd-gui安装

在macOS上安装JD-GUI&#xff08;Java Decompiler GUI&#xff09;是一个简单的过程。JD-GUI是一个独立的图形化应用程序&#xff0c;你可以使用它来查看Java字节码对应的源代码。下面是安装步骤&#xff1a; 下载JD-GUI&#xff1a; 访问JD-GUI的官方网站&#xff08;http://j…

XiaodiSec day034 Learn Note 小迪渗透学习笔记

XiaodiSec day034 Learn Note 小迪渗透学习笔记 记录得比较凌乱&#xff0c;不尽详细 day34 黑盒审计和白盒审计 与 cms 相关 .net java php 代码审计 开始 黑盒&#xff1a;找文件上传的功能 个人用户中心是否存在文件上传功能后台管理系统是否存在文件上传功能字典目录…

深入理解人工智能:从基础到前沿/厾罗

导言&#xff1a; 随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为了一个家喻户晓的概念。无论是在电影中看到的智能机器人&#xff0c;还是我们日常生活中的智能助手&#xff0c;人工智能的应用已经无处不在。但人工智能究竟是什么&#xff1f;它如…

【数据结构】二叉爆炸

【数据结构】二叉爆炸 按照惯例整点抽象的&#xff0c;贴上这篇博客的名字由来&#xff1a; 言归正传&#xff0c;本篇博客介绍二叉树的构造方式、前中后序遍历、层序遍历以及代码随想录中二叉树章节的相关题目&#xff1a; 代码随想录 (programmercarl.com) 一、啥是二叉树 …