位置: 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路由实现)

  • 爱奇艺会员可以两个ipad一起用吗(爱奇艺会员可以投屏到电视上么)

    爱奇艺会员可以两个ipad一起用吗(爱奇艺会员可以投屏到电视上么)

  • 怎么改ipad设备名称(ipad如何更改设备名)

    怎么改ipad设备名称(ipad如何更改设备名)

  • 微信怎么申请人工解封(微信怎么申请人工解封问题描述怎么写)

    微信怎么申请人工解封(微信怎么申请人工解封问题描述怎么写)

  • 华为mate30pro会出现闪屏现象吗(mate30pro的问题)

    华为mate30pro会出现闪屏现象吗(mate30pro的问题)

  • 怎么把qq空间的照片保存到电脑(怎么把qq空间的照片保存到百度网盘)

    怎么把qq空间的照片保存到电脑(怎么把qq空间的照片保存到百度网盘)

  • 全民k歌主播在哪里提现(全民k歌主播在别人歌房收的礼物是什么)

    全民k歌主播在哪里提现(全民k歌主播在别人歌房收的礼物是什么)

  • 宽带错误711什么意思(宽带显示错误711)

    宽带错误711什么意思(宽带显示错误711)

  • 拼多多待发货要等多久(拼多多待发货要钱吗)

    拼多多待发货要等多久(拼多多待发货要钱吗)

  • 苹果按住图标跳出选项(iphone按图标会触动)

    苹果按住图标跳出选项(iphone按图标会触动)

  • 微信未适配小米手机怎么办(微信未适配红米手机)

    微信未适配小米手机怎么办(微信未适配红米手机)

  • wps怎么删除竖线(wps里面的竖线怎么删掉)

    wps怎么删除竖线(wps里面的竖线怎么删掉)

  • 有路由器没猫能上网吗(有路由器没猫能连wifi吗)

    有路由器没猫能上网吗(有路由器没猫能连wifi吗)

  • 抖音火山版和抖音的区别(抖音火山版和抖音极速版哪个赚钱快)

    抖音火山版和抖音的区别(抖音火山版和抖音极速版哪个赚钱快)

  • 苹果expires是什么意思(苹果手机出现ex是什么意思啊)

    苹果expires是什么意思(苹果手机出现ex是什么意思啊)

  • ipv6有多少个地址(ipv6共有多少个地址)

    ipv6有多少个地址(ipv6共有多少个地址)

  • vivo手机小插件在哪(vivo手机小插件时间在哪个功能)

    vivo手机小插件在哪(vivo手机小插件时间在哪个功能)

  • 华为mate30带红外线吗(华为荣耀80有红外线功能吗)

    华为mate30带红外线吗(华为荣耀80有红外线功能吗)

  • 苹果airpods支持se么(苹果airpods支持安卓吗)

    苹果airpods支持se么(苹果airpods支持安卓吗)

  • word文档都包括什么选项卡(word文档是doc吗)

    word文档都包括什么选项卡(word文档是doc吗)

  • pr效果怎么添加进去(pr效果怎么添加不进去)

    pr效果怎么添加进去(pr效果怎么添加不进去)

  • dba是什么职位(dba是什么行业)

    dba是什么职位(dba是什么行业)

  • 桌面怎么显示时间日期(桌面怎么显示时间天气华为)

    桌面怎么显示时间日期(桌面怎么显示时间天气华为)

  • Win7旗舰版如何查看本机的Mac地址?(win7旗舰版如何恢复出厂设置)

    Win7旗舰版如何查看本机的Mac地址?(win7旗舰版如何恢复出厂设置)

  • 在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python)

    在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python)

  • 基于Web的疫情防控管理系统(基于web的疫情防控方案)

    基于Web的疫情防控管理系统(基于web的疫情防控方案)

  • 小企业会计准则适用于哪些企业
  • 现在开票还能用三方协议吗
  • 小规模纳税人批发机动车
  • 临时用工费账务怎么处理
  • 增值税专票如何添加商品名称
  • 户外公司招牌
  • 其他收益会计分录
  • 公司为个人租房是否缴纳个税
  • 转让生产指标的企业所得税
  • 外贸企业一般纳税人申报
  • 哪些固定资产不需要计提折旧
  • 公司向个人转款备注备用金合法吗
  • 为安装设备所发生的差旅费入什么科目
  • 公司为员工异地调岗
  • 购入固定资产挂帐记其他应付款还是应付账款
  • 分支机构多预缴应该怎么退税呢?
  • 17点增值税发票能开吗
  • 进项票已认证忘记开票
  • 企业所得税汇算交所得税如何做账务处理
  • 高新技术企业所得税税率
  • 三废一览表
  • 清包工和甲供工区别在哪
  • 无偿划拨的资产怎么做资产卡片账簿
  • 客户扣款会计分录明细科目
  • 退了货的发票还能用吗
  • 怎么恢复系统win10
  • 劳务报酬个税计算公式表
  • 审计完结凭证要盖公章吗
  • php的!
  • 以固定资产换入无形资产
  • 取得基建借款分录
  • PHP:pg_transaction_status()的用法_PostgreSQL函数
  • mac怎么删除应用程序中没有的软件
  • 补交之前年度税款怎么调账
  • 在anaconda下安装python
  • 工资储备金制度
  • 预算超支怎么办
  • php框架的作用
  • php截取文件后缀名方法
  • timit数据集
  • 正在求偶的凤头卡拉鹰,美国德克萨斯州 (© Alan Murphy/Minden Pictures)
  • vue内置指令实验总结
  • 最新windows11安装要求
  • 原材料用于在建工程增值税如何处理
  • 其他权益工具是什么会计科目
  • c 语言 static
  • python socket连接后发送数据被强行终止
  • 织梦相关文章调用
  • SQL Server UPDATE语句的用法详解
  • 押金的增值税处理流程
  • 临时售楼处需要什么手续
  • 退货发票会作废吗
  • 工程安装人工费怎么开票
  • 汇算清缴后补缴得企业所得税,计入哪年的税负
  • 工程结算怎么结转收入
  • 销售材料购买方会计分录
  • 一般纳税人免税额度
  • 哪些计入研发费用
  • 新成立公司申报个税流程
  • 农业技术人员是什么意思
  • 中银单位结算卡年费
  • 年底结账会计处理
  • 商业折扣入账
  • 税控盘网上抄报税的步骤
  • mysql删除重复的id但各保留一个
  • sqlbean
  • mysql基本命令大全
  • 被放弃的遗产
  • windows8功能设置
  • win7系统所有软件打不开
  • 电脑裸奔可以吗
  • win8.1系统更新
  • nodejs读取json文件,并返回列表
  • android canvas scale
  • 怎么把perl删除干净
  • javascript的理解
  • jqgrid loadcomplete
  • jQuery中each()、find()和filter()等节点操作方法详解(推荐)
  • 山东省税务局网站首页
  • 办理养殖照税务登记证
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设