vue打包优化一

news2024/11/28 8:43:02

webpack.dll.config.js配置

相关文章
https://www.cnblogs.com/echoyya/p/16413591.html

步骤一:创建webpack.dll.config.js(不一定要是这个名字,只要执行指令的时候路径正确就行)

// webpack.dll.config.js
const path = require('path')
const webpack = require('webpack')
var vendors = [
  'axios',
  'vue',
  'vue-router',
  'vuex',
  './public/mapData/china.js'
]
module.exports = {
  entry: {
    vendor: vendors
  },
  output: {
    path: path.join(__dirname, '/dll'),
    // 输出的动态链库的文件名称,[name]代表当前动态连接库的名称
    filename: '[name].dll.js',
    library: '[name]_[hash]'
  },
  plugins: [
    new webpack.DllPlugin({ // webpack内置的插件,不需要额外安装
      path: path.join(__dirname, '/dll', 'manifest.json'),
      // 动态链接库的全局变量名称,需要和 output.library中保持一致
      // 该字段的值也就是输出的 manifest.json文件中 name字段的值
      context: __dirname,
      name: '[name]_[hash]'
    })
  ],
   performance: {
        hints: false
    }
}

步骤二:在package.json中添加快捷命令(./webpack.dll.config.js这边的路径对就行)

  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "dll": "webpack --config ./webpack.dll.config.js"
  },

步骤三、执行dll命令,成功后出现以下内容

在这里插入图片描述

步骤四、在vue.config.js中引入manifest.json依赖关系,并将 dll.js引入html页面

安装插件

npm install html-webpack-include-assets-plugin --save-dev
const TerserPlugin = require('terser-webpack-plugin')
const webpack = require('webpack')
const path = require('path')
const HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
  ...
  publicPath: process.env.VUE_APP_BASE,
  productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
  configureWebpack: () => ({
    plugins: [
      // 引入manifest.json依赖关系
      new webpack.DllReferencePlugin({
        context: __dirname,
        manifest: require('./dll/manifest.json')
      }),
      // 将vendor.dll.js复制到js目录下
      new CopyWebpackPlugin([
        {
          from: path.resolve(__dirname, 'dll/vendor.dll.js'),
          to: 'js'
        }
      ]),
      // 将 dll 注入到 生成的 html 模板中
      new HtmlWebpackIncludeAssetsPlugin({
        assets: ['./js/vendor.dll.js'],
        append: false
      })
    ],
    optimization: {
      minimizer: [
        new TerserPlugin({
          terserOptions: {
            compress: {
              drop_console: true, // 传true就是⼲掉所有的console.*这些函数的调⽤.
              drop_debugger: true, // ⼲掉那些debugger;
              pure_funcs: ['console.log'] // 如果你要⼲掉特定的函数⽐如console.info ,⼜想删掉后保留其参数中的副作⽤,那⽤pure_funcs来处理
            },
            // 开启缓存
            cache: true,
            // 开启多进程打包
            parallel: true,
            // 启动source-map
            sourceMap: false
          }
        })
      ]
    }
  })
  ...
}

附一个函数式写法
在这里插入图片描述

注:
1、copy-webpack-plugin好像webpack自带,要是没的话,也可以安装,看了别的博文,建议6.0.4
2、我看别人引入vendor.dll.js文件是直接在index.html下直接引入的,类似下图,但是我打包发布之后一直报错,就没用了
在这里插入图片描述
在这里插入图片描述

步骤五、打包发布

以下是一些dll报错记录:

1、dll命令报错[webpack-cli] Error: DllPlugin: supply an Array as entry

在这里插入图片描述
但是我的vendors明明是数组,很不理解
在这里插入图片描述

看了源码,打印了一下item
在这里插入图片描述
发现item打印出来不是[axios,vue,vue-router,vuex],而是{import:[axios,vue,vue-router,vuex]}

解决方法:开发环境安装webpack-cli

在这里插入图片描述
我试了更高版本的webpack-cli,是5.0.1+,但是报错了(报错如下),所以用的webpack-cli 4.9.2

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FIX:FusionCharts Suite XT 3.19.x

FusionCharts Suite XT:探索 100 多张图表和 2000 多张地图 FusionCharts 提供了 100 多张图表和 2000 多张地图。凭借广泛的文档、一致的 API 和一系列自定义选项 - FusionCharts 是最全面的 JavaScript 图表库,受到全球 750,000 名开发人员的喜爱。Fus…

JAVA实训第四天

目录 异常 什么是异常? 为什么要进行异常处理? 方法的调用堆栈 方法调用堆栈中异常对象的传递 Java中的异常类 常见的异常类 常见的异常类及出现此异常的原因 •1、java.lang.NullpointerException(空指针异常) •2、 java.lang.ClassNotFoundExcept…

rocketmq源码-broker接收消息

前言 这篇笔记,主要记录producer在通过netty发送了请求之后,在broker这边是如何处理的消息的 org.apache.rocketmq.remoting.netty.NettyRemotingServer.NettyServerHandler#channelRead0 这里是broker的nettyServer端接收客户端发送消息的入口&#x…

Android中GRPC的使用-4种通信模式

GRPC的通信模式 GRPC四种基础通信模式:一元RPC、服务器端流RPC、客户端流RPC以及双向流RPC。下面分别四种模式进行介绍,并在Android环境中来实现服务和客户端。 一元RPC 一元RPC模式也被称为简单RPC模式。在该模式中,当客户端调用服务端的远程…

破记录!国产数据库KunDB 单节点TPC-C事务性能超180万tpmC

近日,星环科技KunDB在TPC-C事务性能测试中,采用常规国产服务器,实现了单节点tpmC超180万,体现其世界级领先的事务处理能力。 TPC-C是全球 OLTP 数据库最权威的性能测试基准,由TPC组织(国际事务性能委员会&…

【数字IC基础】TestBench功能

文章目录 一、TestBench的目的?二、TestBench的功能?三、TestBench(验证)的四要素?一、TestBench的目的? 对使用硬件描述语言(HDL)设计的电路(DUT)进行仿真验证,测试设计电路的功能、部分性能是否符合预期二、TestBench的功能? TestBench和DUT的关系是一个马蹄形结…

React - 项目初始化设置

React - 项目初始化设置一. 页面零边距二. 路径别名配置三. 安装使用 scss四. 安装 router一. 页面零边距 可以手写 css 重置页面样式,也可使用 reset-css 自动配置 手写样式不多说,这里使用 reset-css 安装依赖 yarn add reset-css src/App.js 文件中引…

阿里技术人分享的三本书豆瓣评分8.5分,让你的架构思维略窥门径

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。 然而,面试人群众多,技术市场却相对冷淡,…

ssm+Vue计算机毕业设计校园疫情管理系统(程序+LW文档)

ssmVue计算机毕业设计校园疫情管理系统(程序LW文档) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

我用了几行代码就实现了界面变灰效果

前言 前段时间,各个大厂的 App 首页都变成了灰色,网上还有不少人问界面变灰怎么做到的。有人说是后台换了图片,这个回答显然是不懂技术了,对于个性化推荐系统来说,使用的图片那么多张,怎么可能一一替换。还有一种说法是说后台将图片处理后再返回给前端的,这个显然也不太…

$ORACLE_BASE和$ORACLE_HOME下xml文件误删

问题描述: 某项目安装环境grid管理的oracle,环境已经搭建好许久,执行上线检查PSU版本时发现opatch lsinventory报错 但实例的sqlpatch显示已经应用成功且oracle client版本也显示为19.13 怀疑是Central Inventory(/oracle/oraInv…

【知识图谱】(task4)知识图谱的抽取和构建

note CRF条件随机场是全局最优(判别式模型),HMM是局部最优(生成式模型)实体关系抽取方法概览: 事件抽取主要分为事件的发现和分类和事件要素抽取两部分,又可以细分为触发词识别与事件分类和要素…

第13部分 VLAN,Trunk 和VTP

目录 13.1 VLAN,Trunk 和VTP 简介 13.1.1 VLAN 13.1.2 Trunk 13.1.3 VTP 13.1.4 EtherChannel 13.2 实验1:划分VLAN 1.实验目的 2.实验拓扑 3.实验步骤 4.实验调试 13.3 实验2:Trunk 配置 1.实验目的 2.实验拓扑 3.实验步骤 1…

SpringBoot整合Graylog做日志收集

日志收集折腾过程 ELK 之前整合过ELK做日志采集,就是Elasticsearch Logstash Kibana: Elasticsearch:存储引擎,存放日志内容,利于全文检索Logstash:数据传输管道,将日志内容传输到Elastics…

无法在Anaconda环境中使用pre-commit run --all-files:缺少匹配版本的ruamel.yaml

参考来源:https://stackoverflow.com/questions/68794749/unable-to-run-pre-commit-in-anaconda-environment 问题 与电脑两地隔离了半个月,今天开机commit的时候忽然弹出了下面的错误(自己图忘存了,图源置顶链接)&…

b站黑马的Vue快速入门案例代码——小黑记事本

目录 目标效果: 重点原理: (1)push()方法——向数组末尾,添加新元素,并返回新长度 (2)v-on可以传递自定义参数,v-on:click”...“的简写是clic…

jdk11新特性——标准Java异步HTTP客户端

目录一、概述二、HTTP Client 同步发送请求使用示例2.1、创建简单的服务端2.2、创建HTTP Client 同步代码三、HTTP Client 异步发送请求使用示例3.1、创建简单的服务端(参考2.1)3.2、创建HTTP Client 异步代码一、概述 Java 9 开始引入的一个处理 HTTP …

浅谈ioremap,vmalloc,mmap三者之间的脉络

前言 系统mmu开启后, 程序对内存的访问都是虚拟地址, 之后mmu会自动将虚拟地址变为实际的物理地址(硬件行为), 所以我们的程序如果要访问物理地址的话,必须要通过mmu建立虚拟地址与物理地址之间的映射关系。对于虚拟地址映射到物理地址的操作…

非零基础自学Golang 第7章 函数 7.6 延迟执行语句 7.7 小结

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.6 延迟执行语句7.7 小结第7章 函数 7.6 延迟执行语句 Go语言中存在一种延迟执行的语句,由defer关键字标识,格式如下: defer 任意语句defer后的语句不会被马上执行,在…

Redis持久化详解

一、概述 在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群,下面分别说明它们的作用,以及解决了什么样的问题。 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份…