移动端打包成功后禁止生成 report.html 文件,并不自动打开该文件

目录

  • 【问题】移动端 `npm run build` 打包后生成并打开 `report.html` 文件
    • `package.json` 文件
    • `vue.config.js` 代码
  • 【解决】打包后去除 `report.html` 文件
    • `vue.config.js` 代码
  • 参考

【问题】移动端 npm run build 打包后生成并打开 report.html 文件

在这里插入图片描述
在这里插入图片描述

package.json 文件

{"name": "hzcdt-zhuji-h5","version": "0.0.1","description": "A vue h5 template with Vant UI","author": "Sunnie <sunniejs@163.com>","private": true,"scripts": {"serve": "vue-cli-service serve --open","build": "vue-cli-service build","stage": "vue-cli-service build --mode staging","lint": "vue-cli-service lint"},"dependencies": {"axios": "^0.19.2","core-js": "^3.6.4","dayjs": "^1.11.10","echarts": "^5.4.2","good-storage": "^1.1.1","lib-flexible": "^0.3.2","lodash": "^4.17.15","lodash.clonedeep": "^4.5.0","lodash.throttle": "^4.1.1","regenerator-runtime": "^0.13.5","vant": "^2.10.2","vconsole": "^3.15.0","vue": "^2.6.11","vue-esign": "^1.1.4","vue-router": "^3.2.0","vuex": "^3.4.0"},"devDependencies": {"@vue/cli-plugin-babel": "~4.5.0","@vue/cli-plugin-eslint": "~4.5.0","@vue/cli-plugin-router": "~4.5.0","@vue/cli-plugin-vuex": "~4.5.0","@vue/cli-service": "~4.5.0","babel-eslint": "^10.1.0","babel-plugin-import": "^1.13.0","babel-plugin-transform-remove-console": "^6.9.4","eslint": "^6.7.2","eslint-plugin-vue": "^6.2.2","node-sass": "^4.14.1","postcss-pxtorem": "^5.1.1","sass-loader": "^8.0.2","script-ext-html-webpack-plugin": "^2.1.4","vue-template-compiler": "^2.6.11","webpack-bundle-analyzer": "^3.8.0"}
}

vue.config.js 代码

'use strict'
const path = require('path')
const defaultSettings = require('./src/config/index.js')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin // 【主要代码】const resolve = dir => path.join(__dirname, dir)
// page title
// const name = defaultSettings.title || 'vue mobile template'
const name = defaultSettings.title || ''
// 生产环境,测试和正式
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
const loginTarget = 'http://192.168.0.xx:9181' // 公司 移动端 环境
const serviceTarget = 'http://192.168.0.xx:9000' // 公司环境 业务接口module.exports = {// parallel: false,publicPath: './', // 署应用包时的基本 URL。 vue-router hash 模式使用//  publicPath: '/app/', //署应用包时的基本 URL。  vue-router history模式使用outputDir: 'dist-ding', //  生产环境构建文件的目录assetsDir: 'static', //  outputDir的静态资源(js、css、img、fonts)目录lintOnSave: !IS_PROD,productionSourceMap: false, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。devServer: {port: 9020, // 端口open: false, // 启动后打开浏览器overlay: {//  当出现编译器错误或警告时,在浏览器中显示全屏覆盖层warnings: false,errors: true},proxy: {// 配置跨域'/personnel_manager': {target: loginTarget,changOrigin: true},'/supervise_basic': {target: loginTarget,changOrigin: true},'/subsys_proxy': {target: serviceTarget,changOrigin: true// pathRewrite: {//   '^/subsys_proxy': '/'// }},'/supervise_zfjg': {target: serviceTarget + '/api/',changOrigin: true},'/sys_service_proxy': {target: serviceTarget,changOrigin: true},'/blood_manager': {target: loginTarget,changOrigin: true},'/oss': {// target: 'http://192.168.0.131:8077'target: 'http://192.168.0.xx:9000'}}},css: {extract: IS_PROD, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。sourceMap: false,loaderOptions: {scss: {// 向全局sass样式传入共享的全局变量, $src可以配置图片cdn前缀// 详情: https://cli.vuejs.org/guide/css.html#passing-options-to-pre-processor-loadersprependData: `@import "assets/css/mixin.scss";@import "assets/css/variables.scss";$cdn: "${defaultSettings.$cdn}";`}}},configureWebpack: config => {config.name = name// 为生产环境修改配置...// if (IS_PROD) {//   // externals//   config.externals = externals// }},chainWebpack: config => {config.plugins.delete('preload') // TODO: need testconfig.plugins.delete('prefetch') // TODO: need test// 别名 aliasconfig.resolve.alias.set('@', resolve('src')).set('assets', resolve('src/assets')).set('api', resolve('src/api')).set('views', resolve('src/views')).set('components', resolve('src/components'))/*** 添加CDN参数到htmlWebpackPlugin配置中*/// config.plugin('html').tap(args => {//   if (IS_PROD) {//     args[0].cdn = cdn.build//   } else {//     args[0].cdn = cdn.dev//   }//   return args//  })/*** 设置保留空格*/config.module.rule('vue').use('vue-loader').loader('vue-loader').tap(options => {options.compilerOptions.preserveWhitespace = truereturn options}).end()/*** 打包分析*/if (IS_PROD) {// 【主要代码】config.plugin('webpack-report').use(BundleAnalyzerPlugin, [{analyzerMode: 'static'}])}config// https://webpack.js.org/configuration/devtool/#development.when(!IS_PROD, config => config.devtool('cheap-source-map'))config.when(IS_PROD, config => {config.plugin('ScriptExtHtmlWebpackPlugin').after('html').use('script-ext-html-webpack-plugin', [{// 将 runtime 作为内联引入不单独存在inline: /runtime\..*\.js$/}]).end()config.optimization.splitChunks({chunks: 'all',cacheGroups: {// cacheGroups 下可以可以配置多个组,每个组根据test设置条件,符合test条件的模块commons: {name: 'chunk-commons',test: resolve('src/components'),minChunks: 3, //  被至少用三次以上打包分离priority: 5, // 优先级reuseExistingChunk: true // 表示是否使用已有的 chunk,如果为 true 则表示如果当前的 chunk 包含的模块已经被抽取出去了,那么将不会重新生成新的。},node_vendors: {name: 'chunk-libs',chunks: 'initial', // 只打包初始时依赖的第三方test: /[\\/]node_modules[\\/]/,priority: 10},vantUI: {name: 'chunk-vantUI', // 单独将 vantUI 拆包priority: 20, // 数字大权重到,满足多个 cacheGroups 的条件时候分到权重高的test: /[\\/]node_modules[\\/]_?vant(.*)/}}})config.optimization.runtimeChunk('single')})}
}

【解决】打包后去除 report.html 文件

主要看 module.exports 对象中 chainWebpackBundleAnalyzerPlugin 相关代码

在这里插入图片描述

vue.config.js 代码

'use strict'
const path = require('path')
const defaultSettings = require('./src/config/index.js')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin // 【主要代码】const resolve = dir => path.join(__dirname, dir)
// page title
// const name = defaultSettings.title || 'vue mobile template'
const name = defaultSettings.title || ''
// 生产环境,测试和正式
const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
const loginTarget = 'http://192.168.0.xx:9181' // 公司 移动端 环境
const serviceTarget = 'http://192.168.0.xx:9000' // 公司环境 业务接口module.exports = {// parallel: false,publicPath: './', // 署应用包时的基本 URL。 vue-router hash 模式使用//  publicPath: '/app/', //署应用包时的基本 URL。  vue-router history模式使用outputDir: 'dist-ding', //  生产环境构建文件的目录assetsDir: 'static', //  outputDir的静态资源(js、css、img、fonts)目录lintOnSave: !IS_PROD,productionSourceMap: false, // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。devServer: {port: 9020, // 端口open: false, // 启动后打开浏览器overlay: {//  当出现编译器错误或警告时,在浏览器中显示全屏覆盖层warnings: false,errors: true},proxy: {// 配置跨域'/personnel_manager': {target: loginTarget,changOrigin: true},'/supervise_basic': {target: loginTarget,changOrigin: true},'/subsys_proxy': {target: serviceTarget,changOrigin: true// pathRewrite: {//   '^/subsys_proxy': '/'// }},'/supervise_zfjg': {target: serviceTarget + '/api/',changOrigin: true},'/sys_service_proxy': {target: serviceTarget,changOrigin: true},'/blood_manager': {target: loginTarget,changOrigin: true},'/oss': {// target: 'http://192.168.0.131:8077'target: 'http://192.168.0.xx:9000'}}},css: {extract: IS_PROD, // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)。sourceMap: false,loaderOptions: {scss: {// 向全局sass样式传入共享的全局变量, $src可以配置图片cdn前缀// 详情: https://cli.vuejs.org/guide/css.html#passing-options-to-pre-processor-loadersprependData: `@import "assets/css/mixin.scss";@import "assets/css/variables.scss";$cdn: "${defaultSettings.$cdn}";`}}},configureWebpack: config => {config.name = name// 为生产环境修改配置...// if (IS_PROD) {//   // externals//   config.externals = externals// }},chainWebpack: config => {config.plugins.delete('preload') // TODO: need testconfig.plugins.delete('prefetch') // TODO: need test// 别名 aliasconfig.resolve.alias.set('@', resolve('src')).set('assets', resolve('src/assets')).set('api', resolve('src/api')).set('views', resolve('src/views')).set('components', resolve('src/components'))/*** 添加CDN参数到htmlWebpackPlugin配置中*/// config.plugin('html').tap(args => {//   if (IS_PROD) {//     args[0].cdn = cdn.build//   } else {//     args[0].cdn = cdn.dev//   }//   return args//  })/*** 设置保留空格*/config.module.rule('vue').use('vue-loader').loader('vue-loader').tap(options => {options.compilerOptions.preserveWhitespace = truereturn options}).end()/*** 打包分析*/if (IS_PROD) {// 【主要代码】config.plugin('webpack-report').use(BundleAnalyzerPlugin, [{// analyzerMode: 'static',analyzerMode: 'disabled', // 可以是 server、static、json、disabled。在server模式下,分析器将启动HTTP服务器来显示软件包报告。在“静态”模式下,会生成带有报告的单个HTML文件。在disabled模式下,你可以使用这个插件来将generateStatsFile设置为true来生成Webpack Stats JSON文件。openAnalyzer: false // 在默认浏览器中是否自动打开报告,默认 true}])}config// https://webpack.js.org/configuration/devtool/#development.when(!IS_PROD, config => config.devtool('cheap-source-map'))config.when(IS_PROD, config => {config.plugin('ScriptExtHtmlWebpackPlugin').after('html').use('script-ext-html-webpack-plugin', [{// 将 runtime 作为内联引入不单独存在inline: /runtime\..*\.js$/}]).end()config.optimization.splitChunks({chunks: 'all',cacheGroups: {// cacheGroups 下可以可以配置多个组,每个组根据test设置条件,符合test条件的模块commons: {name: 'chunk-commons',test: resolve('src/components'),minChunks: 3, //  被至少用三次以上打包分离priority: 5, // 优先级reuseExistingChunk: true // 表示是否使用已有的 chunk,如果为 true 则表示如果当前的 chunk 包含的模块已经被抽取出去了,那么将不会重新生成新的。},node_vendors: {name: 'chunk-libs',chunks: 'initial', // 只打包初始时依赖的第三方test: /[\\/]node_modules[\\/]/,priority: 10},vantUI: {name: 'chunk-vantUI', // 单独将 vantUI 拆包priority: 20, // 数字大权重到,满足多个 cacheGroups 的条件时候分到权重高的test: /[\\/]node_modules[\\/]_?vant(.*)/}}})config.optimization.runtimeChunk('single')})}
}

参考

webpack-bundle-analyzer 官方 npm
其他csdn分析

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据安全 | 期末复习(中)

文章目录 &#x1f4da;感知数据安全⭐️&#x1f407;传感器概述&#x1f407;传感器的静态特性&#x1f407;调制方式&#x1f407;换能攻击&#x1f407;现有防护策略 &#x1f4da;AI安全⭐️&#x1f407;智能语音系统——脆弱性&#x1f407;攻击手段&#x1f407;AI的两…

springboot快速写接口

1. 建proj形式 name会变成文件夹的名字&#xff0c;相当于你的项目名称 基础包 2. 基础依赖 3. 配置数据库 这里要打开mysql&#xff0c;并且创建数据库 方法&#xff1a; 安装好数据库&#xff0c;改好账号密码用navicat来建表和账号配置properties.yml文件即可 4.用res…

实现负载均衡

1.安装依赖 sudo apt insta11 libgd-dev 2.下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 3.解压nginx tar -zvxf nginx-1.22.1.tar.g2 4.编译安装 cd nginx-1.22.1 5.编译并指定安装位置&#xff0c;执行安装之后会创建指定文件夹/www/env/nginx ./configure…

【阻塞队列】阻塞队列的模拟实现及在生产者和消费者模型上的应用

文章目录 &#x1f4c4;前言一. 阻塞队列初了解&#x1f346;1. 什么是阻塞队列&#xff1f;&#x1f345;2. 为什么使用阻塞队列&#xff1f;&#x1f966;3. Java标准库中阻塞队列的实现 二. 阻塞队列的模拟实现&#x1f35a;1. 实现普通队列&#x1f365;2. 实现队列的阻塞功…

掌握Pyecharts:绘制炫酷词云图的参数解析与实战技巧【第36篇—python:词云图】

文章目录 安装Pyecharts基本的词云图绘制自定义词云图样式多种词云图合并高级词云图定制与交互1. 添加背景图片2. 添加交互效果 使用自定义字体和颜色从文本文件生成词云图总结&#xff1a; 在数据可视化领域&#xff0c;词云图是一种极具表现力和趣味性的图表&#xff0c;能够…

【DevOps】Jenkins Extended E-mail 邮件模板添加自定义变量

文章目录 1、配置Jenkins邮箱2、配置告警模板1、配置Jenkins邮箱 略 2、配置告警模板 自定义变量:DYSK_PYTEST_STATUS // Uses Declarative syntax to run commands inside a container. pipeline {agent {kubernetes {cloud "kubernetes" //选择名字是kuberne…

vivado DDS学习

实现DDS通常有两种方式&#xff0c;一种是读取ROM存放的正弦/余弦信号的查表法&#xff0c;另一种是用DDS IP核。这篇学习笔记中&#xff0c;我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT&#xff08;DDS&#xff09;的standard模式…

10.Elasticsearch应用(十)

Elasticsearch应用&#xff08;十&#xff09; 1.为什么需要聚合操作 聚合可以让我们极其方便的实现对数据的统计、分析、运算&#xff0c;例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如…

SpringCloud-Knife4j文档聚合

在微服务架构下&#xff0c;如果给每个微服务都配置文档&#xff0c;那么每个微服务的接口文档都有自己独立的访问地址&#xff0c;这样要一个个打开每个微服务的文档非常麻烦。一般我们会采用聚合的办法&#xff0c;将所有微服务的接口整合到一个文档中&#xff0c;具体做法有…

web前端项目-五子棋【附源码】

五子棋&#xff08;人机对弈&#xff09; 本项目【五子棋】是一款人机对弈的策略型棋类游戏。可以选择落子方&#xff1b;游戏难度和是否显示落子次序。游戏双方分别使用黑白两色的棋子&#xff0c;在棋盘直线与横线的交叉点上进行对弈。五子棋可以促进大脑发育、提高思维能力…

openlayers+vue实现缓冲区

文章目录 前言一、准备二、初始化地图1、创建一个地图容器2、引入必须的类库3、地图初始化4、给地图增加底图 三、创建缓冲区1、引入需要的工具类库2、绘制方法 四、完整代码总结 前言 缓冲区是地理空间目标的一种影响范围或服务范围,是对选中的一组或一类地图要素(点、线或面…

华为三层交换机之基本操作

Telnet简介 Telnet是一个应用层协议,可以在Internet上或局域网上使用。它提供了基于文本的远程终端接口&#xff0c;允许用户在本地计算机上登录到远程计算机&#xff0c;然后像在本地计算机上一样使用远程计算机的资源。Telnet客户端和服务器之间的通信是通过Telnet协议进行的…

[蓝桥杯]真题讲解:冶炼金属(暴力+二分)

蓝桥杯真题视频讲解&#xff1a;冶炼金属&#xff08;暴力做法与二分做法&#xff09; 一、视频讲解二、暴力代码三、正解代码 一、视频讲解 视频讲解 二、暴力代码 //暴力代码 #include<bits/stdc.h> #define endl \n #define deb(x) cout << #x << &qu…

C语言第十弹---函数(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 函数 1、函数的概念 2、库函数 2.1、标准库和头文件 2.2、库函数的使用方法 2.2.1、功能 2.2.2、头文件包含 2.2.3、实践 2.2.4、库函数文档的⼀般格式 …

PWM调光 降压恒流LED芯片FP7127:为照明系统注入新能量(台灯、GBR、调光电源、汽车大灯)

目录 一、降压恒流LED芯片FP7127 二、降压恒流LED芯片FP7127具有以下特点&#xff1a; 三、降压恒流LED芯片FP7127应用领域&#xff1a; LED照明和调光的新纪元随着LED照明技术的不断发展&#xff0c;人们对于照明调光的需求也越来越高。PWM调光技术作为一种常用的调光方法&…

RUST笔记:candle使用基础

candle介绍 candle是huggingface开源的Rust的极简 ML 框架。 candle-矩阵乘法示例 cargo new myapp cd myapp cargo add --git https://github.com/huggingface/candle.git candle-core cargo build # 测试&#xff0c;或执行 cargo ckeckmain.rs use candle_core::{Device…

设计模式—行为型模式之责任链模式

设计模式—行为型模式之责任链模式 责任链&#xff08;Chain of Responsibility&#xff09;模式&#xff1a;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链&#xff1b;当有请求发生时&am…

wsl下安装ros2问题: Unable to locate package ros-humble-desktop 解决方案

❗ 问题 在wsl&#xff08;Ubuntu 22.04版本&#xff09;下安装ros的过程中&#xff0c;在执行命令 $ sudo apt install ros-humble-desktop一直弹出报错&#xff1a;Unable to locate package ros-humble-desktop 前面设置编码和添加源的过程中一直没有出现其他问题&#…

Docker 配置 Gitea + Drone 搭建 CI/CD 平台

Docker 配置 Gitea Drone 搭建 CI/CD 平台 配置 Gitea 服务器来管理项目版本 本文的IP地址是为了方便理解随便打的&#xff0c;不要乱点 首先使用 docker 搭建 Gitea 服务器&#xff0c;用于管理代码版本&#xff0c;数据库选择mysql Gitea 服务器的 docker-compose.yml 配…

基于Java+SpringBoot+vue+elementui的校园文具商城系统详细设计和实现

基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目录 基于JavaSpringBootvueelementui的校园文具商城系统详细设计和实现前言介绍&#xff1a;系统设计&#xff1a;系统开发流程用户登录流程系统操作流程 功能…