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

  • 华为nova9pro是曲面屏吗(华为nova9是曲屏吗?)

    华为nova9pro是曲面屏吗(华为nova9是曲屏吗?)

  • 小米手表color2如何接电话(小米手表color2如何开机)

    小米手表color2如何接电话(小米手表color2如何开机)

  • OPPO Ace2是曲面屏还是直面屏(ace2是不是曲屏)

    OPPO Ace2是曲面屏还是直面屏(ace2是不是曲屏)

  • 抖音粉丝的星标是什么意思(抖音粉丝的星标图片)

    抖音粉丝的星标是什么意思(抖音粉丝的星标图片)

  • 苹果11和xr区别(苹果11和苹果xr的区别)

    苹果11和xr区别(苹果11和苹果xr的区别)

  • 钉钉看直播分屏老师知道吗

    钉钉看直播分屏老师知道吗

  • 图片剪切快捷键ctrl加什么(图片剪切快捷键是什么)

    图片剪切快捷键ctrl加什么(图片剪切快捷键是什么)

  • 苹果3dtouch失灵的原因(苹果3dtouch没反应)

    苹果3dtouch失灵的原因(苹果3dtouch没反应)

  • 苹果se多任务切换(苹果手机怎么打开多任务切换)

    苹果se多任务切换(苹果手机怎么打开多任务切换)

  • 微信拉黑又删除会显示什么(微信拉黑又删除了对方还能加我吗)

    微信拉黑又删除会显示什么(微信拉黑又删除了对方还能加我吗)

  • 手机被摔黑屏有局部闪烁(手机摔黑屏有绿线闪)

    手机被摔黑屏有局部闪烁(手机摔黑屏有绿线闪)

  • 手机号不想用了可以异地注销吗(手机号不想用了,微信还想用怎么办)

    手机号不想用了可以异地注销吗(手机号不想用了,微信还想用怎么办)

  • xsmax支持双卡吗(美版xsmax支持双卡吗)

    xsmax支持双卡吗(美版xsmax支持双卡吗)

  • QQ删了重新加会有聊天记录吗(qq删了再加)

    QQ删了重新加会有聊天记录吗(qq删了再加)

  • 您的windows7电脑不受支持(win7你的电脑遇到问题,需要重新启动)

    您的windows7电脑不受支持(win7你的电脑遇到问题,需要重新启动)

  • airpods2防水嘛(airpods2代防水吗)

    airpods2防水嘛(airpods2代防水吗)

  • oppor11长度多少厘米(oppor11的长度和宽度)

    oppor11长度多少厘米(oppor11的长度和宽度)

  • 对方手机可能不在身边,建议稍后再次尝试(对方手机可能不在身边请稍后重试qq)

    对方手机可能不在身边,建议稍后再次尝试(对方手机可能不在身边请稍后重试qq)

  • 小米8保修期多久(小米8手机保修几年)

    小米8保修期多久(小米8手机保修几年)

  • 移动信号满格网速太慢是什么原因(移动信号满格网卡)

    移动信号满格网速太慢是什么原因(移动信号满格网卡)

  • 乐视超级手机耗电快怎么办(乐视手机续航怎么样)

    乐视超级手机耗电快怎么办(乐视手机续航怎么样)

  • 荣耀20怎么关后台(荣耀20shd怎么关)

    荣耀20怎么关后台(荣耀20shd怎么关)

  • 嗨来电怎么设置不了(嗨来电怎么设置来电闪光灯)

    嗨来电怎么设置不了(嗨来电怎么设置来电闪光灯)

  • 华为p30pro限量套装是什么(huaweip30pro限量套装)

    华为p30pro限量套装是什么(huaweip30pro限量套装)

  • 搜狗搜索如何设置小窗口(搜狗搜索引擎设置)

    搜狗搜索如何设置小窗口(搜狗搜索引擎设置)

  • 如何操作才能显示文件后缀名?(如何才能显示效果更好)

    如何操作才能显示文件后缀名?(如何才能显示效果更好)

  • 出口退税无纸化备案怎么弄
  • 哪些情形免征契税
  • 外地多预交的税款申报时该怎么填写?
  • 删除申报记录什么意思
  • 软件平台服务公司的营业执照经营范围怎么写
  • 异地分公司需要什么手续
  • 代开了专票,但是销售额没有超过30万怎么处理
  • 增值税发票丢了怎么办?
  • 微商怎么收税
  • 防伪税控开具发票明细表
  • 离婚财产分割涉及偷税漏税可以移交税务局调查吗
  • 上月未做未开票收入分录次月如何调账?
  • 补提企业所得税会计分录
  • 可供出售金融资产包括哪些内容
  • 公司外来人员进入公司
  • 工程基建期的工作总结
  • 公司抵扣发票不用交税吗
  • 银行卡刷卡消费限额
  • 费用类有什么科目
  • 新注册公司税务报到
  • 所有者权益与所有者权益合计
  • 生活用品发票可以报销吗
  • 长期零申报有什么影响
  • 金融服务收入怎么算
  • 淘宝无票采购账务处理
  • 固定资产实物归哪个部门管理
  • 委外开发费用可以加计扣除吗
  • 股东退股会计科目
  • 非居民企业间接转让中国应税财产
  • 上个月多计提的工资怎么调整
  • 土地增值税的计税依据
  • 变更营业执照中心怎么改
  • 高薪技术企业研发项目合同范本最新
  • window10为什么右键就卡住
  • iis防盗链
  • jquery向下滑动元素
  • 发票开出未认证丢失怎么处理
  • php测试mysql 数据库连接
  • 存货盘盈如何记账
  • 企业所得税申报表模板
  • 按实际成本结转6日和7日的材料采购成本
  • php的session
  • 个人所得税申报操作流程
  • 微信转账要如何退回去
  • 公司总人数和上社保人数
  • phpcms模板制作教程
  • 滴滴普通发票如何开
  • phpcms怎么样
  • js函数声明的提出者
  • python如何反编译
  • wordpress防盗链
  • 工商年报股东实缴出资金额能写0吗
  • 民间非营利组织会计制度
  • 现金折扣要扣除什么费用
  • 缴纳印花税如何写分录
  • 代扣代缴增值税怎么做账
  • 现金日记账定金怎么算
  • 收到土地使用权计入什么科目
  • 制造费用影响什么
  • 什么情况下应选用基轴制配合
  • 销售收入包含哪些费用
  • Linux系统下Mysql使用简单教程(一)
  • Linux进入图形界面卡顿
  • w8系统怎么用
  • mac安装dw
  • neoCopy.exe - neoCopy是什么进程 有什么用
  • win7系统怎么创建虚拟网络
  • jsp验证邮箱格式
  • 游戏开发之二维码怎么弄
  • nodemcu web
  • unity example project
  • js 类的继承
  • js选中文字
  • 税务催告期限多久
  • 个人所得税对什么征税
  • 自贡市税务局稽查局领导
  • 个人所得税是先交还是后交
  • 深圳房东有钱吗
  • 增值税有哪些税目
  • 车辆免征信息怎么查
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设