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

  • 微信成长守护平台怎么解除实名认证(微信成长守护平台修改实名认证不符合变更条件)

    微信成长守护平台怎么解除实名认证(微信成长守护平台修改实名认证不符合变更条件)

  • 华为 Mate X2 的前置摄像头的像素是多少

    华为 Mate X2 的前置摄像头的像素是多少

  • qq号注销后还可以恢复吗(qq号注销后还可以申请新号码吗)

    qq号注销后还可以恢复吗(qq号注销后还可以申请新号码吗)

  • Word给标题加边框怎么设置(word中给标题加边框)

    Word给标题加边框怎么设置(word中给标题加边框)

  • wps文档不能修改内容(wps文档不能修改怎么处理)

    wps文档不能修改内容(wps文档不能修改怎么处理)

  • 手机卡顿是处理器还是内存(手机卡顿是处理器老化了吗)

    手机卡顿是处理器还是内存(手机卡顿是处理器老化了吗)

  • 电子发票不能生成pdf(电子发票不能生成怎办)

    电子发票不能生成pdf(电子发票不能生成怎办)

  • x27摄像头无法收回(x27pro摄像头无法收起)

    x27摄像头无法收回(x27pro摄像头无法收起)

  • 微博关注别人为什么会出现未知错误(微博关注别人为什么不显示)

    微博关注别人为什么会出现未知错误(微博关注别人为什么不显示)

  • 运行内存是什么(智慧运行内存是什么)

    运行内存是什么(智慧运行内存是什么)

  • 手机勿扰模式怎样删除(手机勿扰模式怎么联系)

    手机勿扰模式怎样删除(手机勿扰模式怎么联系)

  • 快手作品的访客记录能看到吗(快手作品的访客怎么看)

    快手作品的访客记录能看到吗(快手作品的访客怎么看)

  • mac地址的另一个名字(mac地址唯一)

    mac地址的另一个名字(mac地址唯一)

  • 苹果6什么处理器(苹果6什么处理器相当于安卓什么处理器)

    苹果6什么处理器(苹果6什么处理器相当于安卓什么处理器)

  • 微云在微信里怎么打开(微信微云怎么使用)

    微云在微信里怎么打开(微信微云怎么使用)

  • 淘宝评价积分怎么获得(淘宝评价 积分)

    淘宝评价积分怎么获得(淘宝评价 积分)

  • 常用的数据预处理方法(常用的数据预处理技术包括)

    常用的数据预处理方法(常用的数据预处理技术包括)

  • 用户可设置的文件的属性有(用户可设置的文件的属性不包括)

    用户可设置的文件的属性有(用户可设置的文件的属性不包括)

  • scratch趣味编程是什么(scratch趣味编程教案)

    scratch趣味编程是什么(scratch趣味编程教案)

  • 网盘下载速度慢原因(网盘下载速度慢是什么原因)

    网盘下载速度慢原因(网盘下载速度慢是什么原因)

  • 嘀嗒拼车怎么评价(嘀嗒拼车怎么拼单)

    嘀嗒拼车怎么评价(嘀嗒拼车怎么拼单)

  • 小米手机虚电怎么校准(小米手机虚电怎么解决)

    小米手机虚电怎么校准(小米手机虚电怎么解决)

  • 快影怎么制作三格视频(快影怎么制作三个人视频)

    快影怎么制作三格视频(快影怎么制作三个人视频)

  • 局域网内IP地址冲突(局域网内ip地址冲突怎么找出来)

    局域网内IP地址冲突(局域网内ip地址冲突怎么找出来)

  • 前端实战|React18极客园——布局模块(useRoutes路由配置、处理Token失效、退出登录)(前端实战开发)

    前端实战|React18极客园——布局模块(useRoutes路由配置、处理Token失效、退出登录)(前端实战开发)

  • 城建税和教育费附加
  • 民非 企业所得税
  • 材料按实际成本计价时发出成本的计算方法有
  • 折旧费属于什么科目
  • 营业总收入包括营业外收入吗
  • 季度所得税从业人员怎么填
  • 个人独资企业个人所得税税率
  • 个体户查账征收怎么交税?
  • 单位定期存款如遇利率调整,不论调高调低
  • 印刷配件有哪些
  • 服装厂委托物资零散加工成品如何做账呢?
  • 用银行本票结算材料货款
  • 营改增后向境外提供有偿服务是否需要缴纳增值税?
  • 个体工商户有公户吗?
  • 营改增的优惠政策
  • 工业企业增值税缓交政策
  • 如何少交点税
  • 关于个体工商户的法律规定及司法解释
  • 出让方式取得土地使用权会计处理
  • 高新技术企业享受什么优惠政策
  • 合并报表的少数股东权益分录
  • 合伙人退伙资产清算需要交税吗
  • 金蝶k3外购入库单套打设置
  • 个税代扣代缴手续费返还增值税税率
  • 餐饮发票可以计入研发费用吗
  • 非盈利组织又称
  • PHP:pg_field_table()的用法_PostgreSQL函数
  • php空间怎么用
  • 商誉准则最新修订时间
  • 未交社保可以要求单位赔偿吗
  • 林木业折旧年限
  • 季度申报怎样在网上申报
  • 什么是成本会计
  • word2vec使用方法
  • python 微信红包
  • 员工工资属于什么会计科目
  • js必学知识点
  • 个人所得税年度申报什么意思
  • 暂估入库的金额与发票金额不一样
  • sql2008用户sa登录失败
  • 股东退股如何清算表格
  • 专项附加可以叠加吗
  • 小规模企业所得税怎么征收
  • 单位举办活动
  • mysql中删除语句怎么写
  • 个体工商户定期定额怎么报税
  • 跨月的增值税专用发票怎么冲红或者是作废
  • 现金流量表的编制公式 计算公式
  • 滴滴电子普通发票能抵扣进项税吗
  • 适用于一般纳税人的税率有
  • 办公室做隔断多少钱
  • 商业承兑汇票过期了怎么办
  • 公司流水账怎么做
  • 外购固定资产
  • 通过实例认识MySQL中前缀索引的用法
  • 丢失acui16.dll
  • linux ...
  • apache1.3.19配置文件
  • win10注册表详解
  • mac使用vim
  • 备份linux命令
  • win xp系统安装
  • lsaass.exe
  • 数字小键盘不管用
  • 安卓框架app
  • 将list转换为json字符串
  • jQuery Validation Engine验证控件调用外部函数验证的方法
  • shell脚本实现同时多台远程主机执行命令的代码分享
  • nodejs递归创建目录
  • linux系统如何搜索文件内容
  • jquery控制样式
  • javascript如何学
  • android基于
  • 发票怎能打印
  • 河北电子税务局如何添加办税人员
  • 坚持问题导向的前提是
  • 2021年四川医保缴费截止时间
  • 国税稽查局查账单凭个人流水能不能当做证据
  • 上海市浦东新区人民医院
  • 补缴往年土地使用税怎么做分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设