位置: 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 转载请保留说明!

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

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

  • 山东省增值税发票勾选认证平台
  • 如何理解递延所得税资产和递延所得税负债
  • 哪些企业需要缴纳企业所得税?
  • 企业所得税的纳税义务人不包括下列哪类企业
  • 主管盾和制单盾的区别
  • 兼职人员的差旅费怎么算
  • 增值税的税目有哪些类型
  • 税务局买税盘
  • 网约车有电子发票吗
  • 汇算清缴调增的金额,如何做会计分录
  • 汇算清缴预提费用调整政策
  • 提取的生产企业安全费如何记帐
  • 人力资源外包差额计税税率
  • 增值税普通发票和普通发票的区别怎么交税
  • 外经证是先开票还是先预缴税款
  • 以前年度的税金及附加
  • 融资租赁到期后资产归属
  • 网页游戏玩着卡
  • 预收账款是
  • 笔记本电脑应该关机还是睡眠
  • 电脑维修会不会对电脑有影响
  • 安装win7教程
  • 协调费用应该怎么表述
  • PHP:Memcached::resetServerList()的用法_Memcached类
  • 产品的注册费应由谁支付
  • php模式
  • php curd
  • 客户抽奖活动方案
  • 发票上下联开具的金额不符怎么处罚
  • 基本户可以公对私吗
  • 为什么很多银行卡会被异地警方冻结
  • php验证码扭曲效果怎么做
  • 讯飞智能x2
  • 小规模纳税人每月申报什么税
  • 身份证号码的正确读法
  • php图片代码
  • unix命令大全详解
  • 税控盘抵扣怎么做账
  • java 访问者模式
  • 工程结算是含有增值税吗
  • Sql server 2008 express远程登录实例设置 图文教程
  • 小规模纳税人交通运输服务税率
  • 无形资产租金计入什么科目
  • 生产成品出库的会计分录
  • 给销售培训产品该如何做
  • 免征的增值税如何处理
  • 向银行按揭贷款时,收入流水不够怎么办?
  • 已抵扣的增值税怎么做账
  • 暂估入库产品销售结转成本
  • 香港发票在内地认可吗
  • 固定资产折旧方法不考虑净残值
  • 待摊费用会计处理
  • 变更法人需要什么条件
  • 转账凭证的编制流程
  • mysql 索引 语句
  • mysql 创建root用户和普通用户及修改删除功能
  • win7怎么设置桌面位置
  • win10系统进程
  • ubuntu安装visual studio2019
  • office2013标准版
  • centos硬盘分区磁盘分区
  • win7系统和win8系统哪个好用
  • opengl oes纹理
  • bootstrap怎么用
  • android opencl
  • js array api
  • node.js redis
  • div style display none
  • unity协程会阻塞主线程吗
  • unity arkit
  • nodejs实战教程
  • android网络访问异常提示有哪些
  • android内存占用分析
  • 如何将python中的列表与数据对齐
  • 医保已申报未缴费可以撤销申报吗
  • 空调设备税率多少钱
  • 煤炭行业的税负率是多少合适
  • 湖南社保费申报测算管理系统登录不了
  • 如何建立内部控制缺陷认定的定型标准和定量标准
  • 2014年房产税征收标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设