位置: IT常识 - 正文

Vue项目分包打包配置(包含dev)全过程(vuecli打包项目)

编辑:rootadmin
Vue项目分包打包配置(包含dev)全过程

推荐整理分享Vue项目分包打包配置(包含dev)全过程(vuecli打包项目),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue工程打包部署,vue项目打包dist,vue 分模块打包,vue3项目打包,vue 项目打包,vue3项目打包,vue 项目打包,vue项目打包dist,内容如对您有帮助,希望把文章链接给更多的朋友!

今天领导要求支援某项目的分包配置,emmm,在参考了公司其他项目的分包操作后,依葫芦画瓢,中间也踩了好几个坑,简单记录下过程。

一、拉代码、安装依赖

哈哈哈,上来就踩坑了,我拉了代码后,直接哐哐整,然后一堆依赖报错,我才发现,同事新增了依赖包,我并不知道,然后就乖乖安装依赖吧。此处要特别强调一下,***没有cross-env 这个依赖的,记得要安装一下,没有cross-env 这个依赖的,记得要安装一下,没有cross-env 这个依赖的,记得要安装一下,***重要的事情说三遍,不安的话分包整不了。shell命令贴上了:npm install --save-dev cross-env 安装成功后 package.json里面会多"cross-env": “^7.0.3”,配置项,那就对了.如果实在不行,要不然你就试试全局安装吧,npm install -g cross-env,反正全局安装肯定是可以的,

二、配置环境变量Vue项目分包打包配置(包含dev)全过程(vuecli打包项目)

这个也是个坑坑啊,我要改的项目没有配置环境变量,我一开始没发现,后来死活不加载不同环境下对应的路由,才发现是这的坑。还有打包目录名字可配可不配,不过建议配置上。

vue.config.js中如下配置

let projectName = process.env.PROJECT_NAME || "All"; //获取名称module.exports = { publicPath: './', outputDir: "dist/" + projectName + "/", //打包后的项目目录名称,建议这样修改 productionSourceMap: false, lintOnSave: false, devServer: { //自己公司项目自己配置哈 }, chainWebpack: config => { // 设置环境变量 config.plugin("define").tap(args => { args[0]["process.env"].PROJECT_NAME = JSON.stringify( process.env.PROJECT_NAME ); return args; }); }}三、拆路由

把项目中router.js中的要分包的路由分别拆到不同的文件中,例如我图中就拆了前后9个,后续不同的打包命令,就会加载这九个文件中的对应的路由。此处有个疑问,就是能不能拆分子路由的问题,大家可以试试。我是把一个模块的父子路由打包带走的。此处就放两个文件路由大家参考一下

//sign.jsexport default[ { path: "/main", name: "main", meta: { cachePage: true }, component: () => import("@/views/main/main.vue"), children: [ { path: "/other", name: "other", component: () => import("@/views/login/other"), }, /* 贷款签约 */ { path: "/loanSigning", name: "loanSigning", meta: { cachePage: true, showMain: true }, component: () => import("@/views/loanSigning/index"), }, { path: "/loanSigningEdit", name: "loanSigningEdit", meta: { showBack: true }, component: () => import("@/views/loanSigning/loanSigningEdit"), }, { path: "/loanSigningRead", name: "loanSigningRead", meta: { showBack: true }, component: () => import("@/views/loanSigning/loanSigningRead"), }, ] }]```javascript```javascript//track.jsexport default[ { path: "/main", name: "main", meta: { cachePage: true }, component: () => import("@/views/main/main.vue"), children: [ { path: "/other", name: "other", component: () => import("@/views/login/other"), }, /* 轨迹视图 */ { path: "/trackView", name: "mobileMarketing", meta: { cachePage: true, showMain: true }, component: () => import("@/views/trackView/index"), }, { path: "/trackViewAdd", name: "trackViewAdd", meta: { showBack: true }, component: () => import("@/views/trackView/trackViewAdd"), }, ] }]四、配置config.js文件

config.js主要是判断不同的环境下,加载刚才拆的那九个不同的路由

//config.jslet options={ "routersName":[],//路由文件名列表 "menuFlag":"",//显示的功能列表标识}if(process.env.PROJECT_NAME=='All'){ options.menuFlag="All" options.routersName=[ ...require("@/plugins/vueRouter/all.js").default ]}else if(process.env.PROJECT_NAME=='potential'){ options.menuFlag="potential" options.routersName=[ ...require("@/plugins/vueRouter/potential.js").default, ] }else if(process.env.PROJECT_NAME=='mobile'){ options.menuFlag="mobile" options.routersName=[ ...require("@/plugins/vueRouter/mobile.js").default, ] }else if(process.env.PROJECT_NAME == 'credit'){ options.menuFlag="credit" options.routersName=[ ...require("@/plugins/vueRouter/credit.js").default, ] }else if(process.env.PROJECT_NAME == 'loan'){ options.menuFlag="loan" options.routersName=[ ...require("@/plugins/vueRouter/loan.js").default, ] }else if(process.env.PROJECT_NAME == 'sign'){ options.menuFlag="sign" options.routersName=[ ...require("@/plugins/vueRouter/sign.js").default, ] }else if(process.env.PROJECT_NAME == 'track'){ options.menuFlag="track" options.routersName=[ ...require("@/plugins/vueRouter/track.js").default, ] }else if(process.env.PROJECT_NAME == 'approval'){ options.menuFlag="approval" options.routersName=[ ...require("@/plugins/vueRouter/approval.js").default, ] }else if(process.env.PROJECT_NAME == 'main'){ options.menuFlag="main" options.routersName=[ ...require("@/plugins/vueRouter/main.js").default, ] }export default options五、修改router.js//router.jsimport Vue from "vue";import VueRouter from "vue-router";import store from "@/plugins/vuex/store";import config from "../../config" //这个路径要以你的项目路径来哈,自行修改Vue.use(VueRouter);let routes=[ { path: "/", name: "index", redirect: "/login" }, { path: "/login", name: "login", meta: { cachePage: true }, component: () => import("@/views/login/login.vue"), } //要拆包的那些路径,都要删了哈,不然分包就分个寂寞啦!!!!!!!! ]routes=[...routes,...config.routersName] //路由表合并console.log(routes,'routerjs中本身的路由')console.log(config,'config中获取的路由')console.log(process.env.PROJECT_NAME,'环境变量')const router = new VueRouter({ // mode: 'hash', base: process.env.BASE_URL, routes});//如果你的项目中有其他的逻辑 再自行添加哈// ...........其他业务逻辑代码

在合并路由表那块 ,我本来想试试子路由单独拿出来,父路由还放在router.js中的,但是我感觉往children里面塞,也不够优雅,就索性把 path: "/main"这个父路由和children里的子路由都拆走了

六、配置package.json

终于到了这一步,临门一脚了,这一步就是配置shell命令了 为了方便复制,我把package.json里scripts里面的命令代码给大家贴出来,其他的配置应该不用我贴了吧

//package.json中的命令 "scripts": { "dev": "set NODE_OPTIONS=--openssl-legacy-provider && cross-env PROJECT_NAME=All vue-cli-service serve", "dev:main": "cross-env PROJECT_NAME=main vue-cli-service serve", "dev:potential": "cross-env PROJECT_NAME=potential vue-cli-service serve", "dev:mobile": "cross-env PROJECT_NAME=mobile vue-cli-service serve", "dev:credit": "cross-env PROJECT_NAME=credit vue-cli-service serve", "dev:loan": "cross-env PROJECT_NAME=loan vue-cli-service serve", "dev:sign": "cross-env PROJECT_NAME=sign vue-cli-service serve", "dev:track": "cross-env PROJECT_NAME=track vue-cli-service serve", "dev:approval": "cross-env PROJECT_NAME=approval vue-cli-service serve", "build": "cross-env PROJECT_NAME=All vue-cli-service build", "build:potential": "cross-env PROJECT_NAME=potential vue-cli-service build", "build:main": "cross-env PROJECT_NAME=main vue-cli-service build", "build:mobile": "cross-env PROJECT_NAME=mobile vue-cli-service build", "build:credit": "cross-env PROJECT_NAME=credit vue-cli-service build", "build:loan": "cross-env PROJECT_NAME=loan vue-cli-service build", "build:sign": "cross-env PROJECT_NAME=sign vue-cli-service build", "build:track": "cross-env PROJECT_NAME=track vue-cli-service build", "build:approval": "cross-env PROJECT_NAME=approval vue-cli-service build", "lint": "vue-cli-service lint" },

好了,运行不同的命令试试吧。我反反复复有些莫名的报错,重装cross-env也反复好几次,全局的,局部都试过。再比如 dev 不行,dev:main就可以,我就删除了node-modules,重新下载了依赖,就可以了。 呼~~~~ 终于搞定了,希望大家能少走一些坑,拜拜~~~

本文链接地址:https://www.jiuchutong.com/zhishi/295234.html 转载请保留说明!

上一篇:如何配置openai的返回Stream数据并转发到h5页面按markdown格式流式输出(怎么配置opencv)

下一篇:Vue学习:路由(vue路由实现)

  • 华为p40可以安装谷歌GMS吗(华为p40可以安装谷歌三件套吗)

    华为p40可以安装谷歌GMS吗(华为p40可以安装谷歌三件套吗)

  • 怎样隐身访问陌生人的qq空间(怎样隐身访问陌生人的qq空间,还会显示加一吗)

    怎样隐身访问陌生人的qq空间(怎样隐身访问陌生人的qq空间,还会显示加一吗)

  • 中国电信4g网络变慢(中国电信4g网络测速)

    中国电信4g网络变慢(中国电信4g网络测速)

  • 华为nova7和nova7se区别(华为nova7和nova7se哪个好)

    华为nova7和nova7se区别(华为nova7和nova7se哪个好)

  • 手机突然出现定位符号(手机突然出现定位怎么办)

    手机突然出现定位符号(手机突然出现定位怎么办)

  • qq群等级在哪里看(qq群等级怎么弄出来)

    qq群等级在哪里看(qq群等级怎么弄出来)

  • 探探被永久封禁是什么原因(探探被永久封禁怎么重新注册)

    探探被永久封禁是什么原因(探探被永久封禁怎么重新注册)

  • 表格不能打字怎么回事(表格内打不了字)

    表格不能打字怎么回事(表格内打不了字)

  • 装上固态硬盘检测不到(装上固态硬盘检测不出来)

    装上固态硬盘检测不到(装上固态硬盘检测不出来)

  • 迅雷u享版和迅雷有什么区别(迅雷u享版是什么)

    迅雷u享版和迅雷有什么区别(迅雷u享版是什么)

  • 台式电脑耗电量大吗(台式电脑耗电量一小时多少)

    台式电脑耗电量大吗(台式电脑耗电量一小时多少)

  • 手机qq视频通话看不到对方

    手机qq视频通话看不到对方

  • 腾讯会员账号怎么看(腾讯会员账号怎么共享给别人)

    腾讯会员账号怎么看(腾讯会员账号怎么共享给别人)

  • 小米mi5c是全网通吗(小米mi5c是什么型号)

    小米mi5c是全网通吗(小米mi5c是什么型号)

  • 手机文件管理的文档可以删除吗(手机文件管理的内部存储能删吗)

    手机文件管理的文档可以删除吗(手机文件管理的内部存储能删吗)

  • 华为荣耀20s有nfc功能吗(华为荣耀20S有没有红外线)

    华为荣耀20s有nfc功能吗(华为荣耀20S有没有红外线)

  • 无互联网连接是啥意思(无互联网连接是哪出问题)

    无互联网连接是啥意思(无互联网连接是哪出问题)

  • 探探解除匹配对方知道吗(探探解除匹配对方有提示吗)

    探探解除匹配对方知道吗(探探解除匹配对方有提示吗)

  • 三星s6手机发布时间(三星s6手机发布价格表)

    三星s6手机发布时间(三星s6手机发布价格表)

  • 抖音中321那种视频怎么做(抖音323是什么)

    抖音中321那种视频怎么做(抖音323是什么)

  • 怎么解锁手机(怎么解锁手机卡)

    怎么解锁手机(怎么解锁手机卡)

  • 钉钉日志如何取消发送群(钉钉的日志提醒在哪里关闭)

    钉钉日志如何取消发送群(钉钉的日志提醒在哪里关闭)

  • oppo手机怎么添加桌面小部件(oppo手机怎么添加小组件)

    oppo手机怎么添加桌面小部件(oppo手机怎么添加小组件)

  • vivox3返回键在哪里(vivo y3s返回键)

    vivox3返回键在哪里(vivo y3s返回键)

  • 为什么朋友圈点赞不显示(为什么朋友圈点不了赞)

    为什么朋友圈点赞不显示(为什么朋友圈点不了赞)

  • 手机连不上wifi是怎么回事电脑可以连网(手机连不上wifi显示已停用是怎么回事)

    手机连不上wifi是怎么回事电脑可以连网(手机连不上wifi显示已停用是怎么回事)

  • 原材料加工成产品的会计分录
  • 固定资产清理哪方登记增加
  • 8.会计核算方法具体包括哪些内容?
  • 展示费是业务宣传费吗
  • 增值税逾期未申报的税务怎么处理
  • 上月未计提税金,下月怎么做分录
  • 接受投资转入固定资产不影响现金流量变动
  • 固定资产出租的收入计入什么科目
  • 服务业的地税是什么税
  • 财产租赁所得适用什么税率
  • 开劳务分包发票需要什么条件?
  • 公司名下没车能报油费吗
  • 赎回公司发行的债券怎么做账?
  • 有形动产租赁服务和不动产租赁服务的区别
  • 公司聚餐计入福利费还是招待费
  • 出口企业出口退税
  • ukey开票界面
  • 安装固定资产的费用
  • 租赁公司车转个人有报废年限吗?
  • 阿拉斯加州zip
  • linux中!
  • 销售人员奖励办法
  • 政府搬迁补偿款不够建房怎么办
  • 建筑行业怎么做职业生涯规划
  • 为什么把收入进行舞弊假定
  • 苹果发布macOS更新
  • 增值税发票怎么抵税
  • php array_chunk
  • vue数据实时更新
  • 国外进口增值税税率
  • 免税跟零税率
  • 预缴企业所得税怎么做账务处理
  • 购销合同印花税计算方法
  • post请求params
  • 为什么税前利润加可抵扣暂时性差异
  • php中获取当前时间
  • 人工智能导论论文2000字
  • php 伪造HTTP_REFERER页面URL来源的三种方法
  • 税控机清单
  • vue+elementui
  • 不具备独立核算条件的行政单位
  • 前端动画库
  • Linux下MySQL卸载和安装图文教程
  • 按工资申报的工龄怎么算
  • 什么叫财务台账
  • PostgreSQL教程(十九):SQL语言函数
  • 代扣代缴境外增值税怎么申报
  • 股东投入的资金
  • 工会经费按什么比例返还
  • 股东入股怎么做分录
  • 通信费属于哪个会计科目
  • 先付款后开票如何入账
  • 房地产企业土地价款如何入账
  • 未使用的固定资产计提折旧计入什么科目
  • 损益类账户借贷方向增减
  • 培训费产生的差额是什么
  • 税控盘交服务费
  • 免税收入计入起征点吗
  • 预收账款账务处理流程图
  • 个体工商户建账流程
  • mysql8.0远程连接
  • mysql格式化日期yyyy/mm/dd
  • win8任务管理器在哪
  • Win10 Mobile 10549中Cortana电池消耗很大该怎么办?
  • centos control-d
  • desl.exe是什么
  • windows升级10
  • win8隐藏任务栏怎么恢复
  • linux epub阅读器
  • 怎样修改linux用户名和密码
  • win7开机自动弹出注册表编辑器怎么办
  • 利用感情骗取钱财算诈骗吗
  • shell截取字段
  • linux用yum
  • 对activity的四种启动模式的理解
  • java learning
  • cocos2d安装
  • 深圳龙岗有几个街道
  • 广东省行业税负率表
  • 湖南电子税务局网上办税大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设