位置: IT常识 - 正文

vue项目打包优化及配置vue.config.js文件(实测有用)(vue打包速度优化)

编辑:rootadmin
vue项目打包优化及配置vue.config.js文件(实测有用) 首先我们需要在根目录里创建一个vue.config.js

推荐整理分享vue项目打包优化及配置vue.config.js文件(实测有用)(vue打包速度优化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue项目打包优化方案,vue项目打包优化方案,vue项目打包运行,vuecli打包优化,vue3打包优化,vue webpack打包优化,vue项目打包优化方案,vue3打包优化,内容如对您有帮助,希望把文章链接给更多的朋友!

首先在文件中先写入//打包配置文件module.exports = { assetsDir: 'static', // outputDir的静态资源(js、css、img、fonts)目录 publicPath: './', // 静态资源路径(默认/,如果不改打包后会白屏) productionSourceMap: false, //不输出map文件};之后再使用CDN 加速优化(此代码在module.exports对象外面)cdn加速可以去官网找到相应插件的路径 BootCDN官网// 是否为生产环境const isProduction = process.env.NODE_ENV !== 'development';// 本地环境是否需要使用cdnconst devNeedCdn = false// cdn链接const cdn = { // cdn:模块名称和模块作用域命名(对应window里面挂载的变量名称) externals: { 'vue': 'Vue', 'vuex': 'Vuex', 'vue-router': 'VueRouter', 'axios': 'axios', 'element-ui': 'ELEMENT' //这里需要注意下 }, // cdn的css链接 css: ['https://unpkg.com/element-ui/lib/theme-chalk/index.css' //引入element ui css文件 ], // cdn的js链接 js: [ 'https://cdn.bootcss.com/vue/2.6.11/vue.min.js', 'https://cdn.bootcss.com/vue-router/3.2.0/vue-router.min.js', 'https://cdn.bootcss.com/axios/0.27.2/axios.min.js', 'https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.common.min.js' ]}vue项目打包优化及配置vue.config.js文件(实测有用)(vue打包速度优化)

在module.exports对象里写入

chainWebpack: config => { // ============注入cdn start============ config.plugin('html').tap(args => { // 生产环境或本地需要cdn时,才注入cdn if (isProduction || devNeedCdn) args[0].cdn = cdn return args }) // ============注入cdn start============ },对图片文件进行压缩

下载依赖 这里如果用npm 可能会下载速度慢安装失败,建议使用cnpm

cnpm install image-webpack-loader --save-dev

之后继续在 chainWebpack里面新增以下代码

config.plugins.delete('prefetch') config.module.rule('images') .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/) .use('image-webpack-loader') .loader('image-webpack-loader') .options({ bypassOnDebug: true })对代码压缩

先下载依赖 也建议使用cnpm

cnpm install uglifyjs-webpack-plugin --save-dev

在module.exports对象里写入

configureWebpack: config => { if (isProduction || devNeedCdn) config.externals = cdn.externals // 代码压缩 config.plugins.push( new UglifyJsPlugin({ uglifyOptions: { //生产环境自动删除console compress: { drop_debugger: true, drop_console: true, pure_funcs: ['console.log'] } }, sourceMap: false, parallel: true }) ) },对公共代码抽离

在configureWebpack里继续写入

// 公共代码抽离 config.optimization = { splitChunks: { cacheGroups: { vendor: { chunks: 'all', test: /node_modules/, name: 'vendor', minChunks: 1, maxInitialRequests: 5, minSize: 0, priority: 100 }, common: { chunks: 'all', test: /[\\/]src[\\/]js[\\/]/, name: 'common', minChunks: 2, maxInitialRequests: 5, minSize: 0, priority: 60 }, styles: { name: 'styles', test: /\.(sa|sc|c)ss$/, chunks: 'all', enforce: true }, runtimeChunk: { name: 'manifest' } } } }最后整合起来vue.config.jsconst UglifyJsPlugin = require('uglifyjs-webpack-plugin')// 是否为生产环境const isProduction = process.env.NODE_ENV !== 'development';// 本地环境是否需要使用cdnconst devNeedCdn = false// cdn链接const cdn = { // cdn:模块名称和模块作用域命名(对应window里面挂载的变量名称) externals: { 'vue': 'Vue', 'vuex': 'Vuex', 'vue-router': 'VueRouter', 'axios': 'axios' }, // cdn的css链接 css: [ ], // cdn的js链接 js: [ 'https://cdn.bootcss.com/vue/2.6.11/vue.min.js', 'https://cdn.bootcss.com/vue-router/3.2.0/vue-router.min.js', 'https://cdn.bootcss.com/axios/0.27.2/axios.min.js', 'https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.common.min.js' ]}//打包配置文件module.exports = { assetsDir: 'static', publicPath: './', productionSourceMap: false, //不输出map文件 chainWebpack: config => { // ============注入cdn start============ config.plugin('html').tap(args => { // 生产环境或本地需要cdn时,才注入cdn if (isProduction || devNeedCdn) args[0].cdn = cdn return args }) // ============注入cdn start============ // 在chainWebpack中新增以下代码 config.plugins.delete('prefetch') config.module.rule('images') .test(/\.(png|jpe?g|gif|svg)(\?.*)?$/) .use('image-webpack-loader') .loader('image-webpack-loader') .options({ bypassOnDebug: true }) }, configureWebpack: config => { if (isProduction || devNeedCdn) config.externals = cdn.externals // 代码压缩 config.plugins.push( new UglifyJsPlugin({ uglifyOptions: { //生产环境自动删除console compress: { drop_debugger: true, drop_console: true, pure_funcs: ['console.log'] } }, sourceMap: false, parallel: true }) ) // 公共代码抽离 config.optimization = { splitChunks: { cacheGroups: { vendor: { chunks: 'all', test: /node_modules/, name: 'vendor', minChunks: 1, maxInitialRequests: 5, minSize: 0, priority: 100 }, common: { chunks: 'all', test: /[\\/]src[\\/]js[\\/]/, name: 'common', minChunks: 2, maxInitialRequests: 5, minSize: 0, priority: 60 }, styles: { name: 'styles', test: /\.(sa|sc|c)ss$/, chunks: 'all', enforce: true }, runtimeChunk: { name: 'manifest' } } } } }, devServer: { proxy: { '/api': { target: '线上接口地址', ws: true, changeOrigin: true, pathRewrite: { '^/api': '/', // 根据之前vuejs的配置,用来拿掉URL上的(/api),但是暂时没有什么效果 }, }, }, },};最后我的vue项目由原来的12M减少到2M,启动也是成功
本文链接地址:https://www.jiuchutong.com/zhishi/278470.html 转载请保留说明!

上一篇:阻止更改系统主题内容(阻止电脑系统更新设置在哪)

下一篇:人工智能导论(第四版)王万良编著课后习题答案(人工智能导论报告)

  • 电脑桌面图标如何移动(电脑桌面图标如何自动补位)

    电脑桌面图标如何移动(电脑桌面图标如何自动补位)

  • 微信手机号登录显示操作太频繁请稍后再试(微信手机号登录不了怎么回事)

    微信手机号登录显示操作太频繁请稍后再试(微信手机号登录不了怎么回事)

  • kindle伤眼睛吗(kindle到底伤不伤眼)

    kindle伤眼睛吗(kindle到底伤不伤眼)

  • 微信登录失败代码10003(微信登录失败代表什么?)

    微信登录失败代码10003(微信登录失败代表什么?)

  • bat是什么文件扩展名(bat属于什么文件)

    bat是什么文件扩展名(bat属于什么文件)

  • word未经授权产品什么意思(word未经授权产品怎么处理输入产品钥匙还是那样)

    word未经授权产品什么意思(word未经授权产品怎么处理输入产品钥匙还是那样)

  • bt151可控硅在充电器中的作用(bt151可控硅在充电器中触发二极管的作用)

    bt151可控硅在充电器中的作用(bt151可控硅在充电器中触发二极管的作用)

  • a1533支持什么网络(苹果a1533支持移动4g吗)

    a1533支持什么网络(苹果a1533支持移动4g吗)

  • s9卫星朝什么方向(s九卫星在哪个方向)

    s9卫星朝什么方向(s九卫星在哪个方向)

  • 微信号被用户举报,可以查到是被谁举报吗(微信号被用户举报会有什么大影响吗?)

    微信号被用户举报,可以查到是被谁举报吗(微信号被用户举报会有什么大影响吗?)

  • 两个手机用同一个id照片会同步吗 (两个手机用同一个id如何取消同步)

    两个手机用同一个id照片会同步吗 (两个手机用同一个id如何取消同步)

  • watch怎么开机(iphonewatch怎么开机)

    watch怎么开机(iphonewatch怎么开机)

  • 设为特别关心有啥用(设为特别关心会有什么不一样吗)

    设为特别关心有啥用(设为特别关心会有什么不一样吗)

  • mi4lte是什么手机(mi4c是什么型号)

    mi4lte是什么手机(mi4c是什么型号)

  • 移动4ghd收费吗(4ghd收费吗用流量多吗)

    移动4ghd收费吗(4ghd收费吗用流量多吗)

  • ios13暗黑模式省电吗(ios微信暗黑模式)

    ios13暗黑模式省电吗(ios微信暗黑模式)

  • 苹果手机如何滚动截屏(苹果手机如何滚动截屏聊天记录)

    苹果手机如何滚动截屏(苹果手机如何滚动截屏聊天记录)

  • 苹果x怎么隐藏照片(苹果x怎么隐藏单个app图标)

    苹果x怎么隐藏照片(苹果x怎么隐藏单个app图标)

  • 3done是什么(3done是什么软件)

    3done是什么(3done是什么软件)

  • 红米note7有没有游戏模式(红米note7有没有nfc功能)

    红米note7有没有游戏模式(红米note7有没有nfc功能)

  • 黑胶cd和普通cd区别(黑胶cd和普通cd哪个音质好)

    黑胶cd和普通cd区别(黑胶cd和普通cd哪个音质好)

  • 怎么把快手音乐设置成自己的原声(怎么把快手音乐设置成微信铃声)

    怎么把快手音乐设置成自己的原声(怎么把快手音乐设置成微信铃声)

  • win11右键菜单怎么设置为win10经典样式?(win11右键菜单怎么恢复)

    win11右键菜单怎么设置为win10经典样式?(win11右键菜单怎么恢复)

  • 电费为什么计入成本费用
  • 银行代发工资必须交社保吗
  • 公司破产债务清偿顺序是怎样的
  • 出口退税增值税账务处理
  • 水利建设基金的会计分录
  • 应收职工欠款属于负债吗
  • 增值税专用发票和普通发票的区别
  • 特定资产收益权融资业务
  • 死账呆账的处理程序
  • 进项发票认证后暂不抵扣
  • 电子发票对航天信息利空吗
  • 工伤赔款付医药费怎么会计分录
  • 收购公司收购款转给谁
  • 长期股权投资是什么科目
  • 木制手链品种
  • 对研发机构采购国产设备,全额退还增值税
  • 如何清除上网记录?
  • 企业所得税计算方法公式
  • linux minor
  • php连接sqlserver2008
  • 系统托盘图标禁用
  • win10右键没有新建excel和word
  • php技巧
  • 财政发票可以报销吗
  • 抵债资产的账务处理
  • 买二手房避税
  • php自定义函数的语法格式
  • 城市维护建设税减免税优惠政策
  • mysql如何避免锁表
  • php判断ua
  • 收到政府扶持资金
  • 支付境外佣金税收政策
  • 公司购买银行理财会计分录
  • 小规模增值税减征额怎么算
  • 织梦配置文件
  • 有趣的 Go HttpClient 超时机制
  • mongodb使用案例
  • 税收筹划类型有哪几种
  • 盈余公积转增资本会计科目
  • 应收账款的账龄怎么分析
  • 营业税金及附加是什么科目
  • 固定资产清理残料收入
  • 福利费可以抵扣所得税吗
  • 应收账款余额在借方还是贷方
  • 增值税期末留抵退税
  • 公司债券分为
  • 上年未结转的成本今年可以结转吗
  • 关于职工薪酬的确认和计量下列说法中不正确的是
  • 科研经费的间接费用会审核吗
  • 一般纳税人的资格登记
  • 进项税额转出多了怎么调整
  • 职工外地就医怎么报销
  • 工程检测公司的账务处理流程
  • mysql存储过程视频教程
  • sql需要哪些基础
  • 如何找回丢失数据
  • mysql数据库全量备份
  • 安装vista
  • ubuntu删除vmware
  • mac自带中文输入法
  • 系统 启动速度慢怎么办
  • win7清洗打印机喷头步骤
  • shell脚本echo输出变量
  • linux用c语言实现命令功能
  • linux保存
  • linux常用shell命令
  • node.js速成
  • linux bash shell中case语句的实例
  • 深入理解新发展理念,推进供给侧结构性改革
  • js 图像
  • 在bash shell环境下
  • javascript怎么学
  • js类的实现
  • python编程快速
  • unity脚本api
  • jquery Deferred 快速解决异步回调的问题
  • python获取数据代码
  • 地方税务局工作内容
  • 地税审计税务稽查局职责
  • 红伞伞儿歌寓意着什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设