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

这篇具有很好参考价值的文章主要介绍了Vue项目分包打包配置(包含dev)全过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天领导要求支援某项目的分包配置,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.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.js
export 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.js
export 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.js
let 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.js
import 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命令了
Vue项目分包打包配置(包含dev)全过程
为了方便复制,我把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.toymoban.com/news/detail-448306.html

到了这里,关于Vue项目分包打包配置(包含dev)全过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝眼开源云盘部署全过程(包含mysql安装)

    环境概述: 系统-Centos7.4 数据库-MySQL8 云盘系统-Tank4.0.1 前提:操作系统已完成安装,有外部网络。 一.安装数据库 cd到合适的目录进行下载安装操作,期间不要切换出去。 登录数据库的时候报错访问被拒绝,密码错误: 解决办法:先编辑配置文件跳过验证,进入数据库后设

    2024年01月25日
    浏览(44)
  • phpinfo包含临时文件Getshell全过程及源码

    目录 前言 原理 漏洞复现 靶场环境 源码 复现过程 PHP LFI本地文件包含漏洞主要是包含本地服务器上存储的一些文件,例如session文件、日志文件、临时文件等。但是,只有我们能够控制包含的文件存储我们的恶意代码才能拿到服务器权限。假如在服务器上找不到我们可以包含

    2024年02月12日
    浏览(45)
  • Unity中图集打包的全过程

    首先要知道我们为什么要将一个个精灵打包成图集呢?打包图集有什么好处呢?  Unity3D图集打包,也称为纹理图集打包或精灵图集打包,是一种将多个小纹理合并成一个大纹理的过程。         优点:                                 a.减少渲染调用次数、

    2024年04月26日
    浏览(40)
  • uniapp离线打包安卓APP全过程

    1、首先就是下载Android Studio,官方下载 就好了。 2、然后就是使用 HBuilderX 离线打包,生成本地打包App资源。 打包好的文件路径在unpackageresources__UNI__XXX,这里的这个__UNI__XXX就待会需要的。 3、再准备HBuilder最新的SDK下载好 原生开发者支持,点击 和彩云 , 提取码: LE9L; 如果此链接

    2023年04月08日
    浏览(47)
  • apk反编译、修改、重新打包、签名全过程

    工具简介 dex2jar ,将可运行文件classes.dex反编译为jar源码文件 jd-gui ,查看jar源码文件 反编译

    2024年02月16日
    浏览(43)
  • Unity打包WebGL的全过程及在打包和使用过程中会遇到的问题

    目录 概要 Unity打包WebGL PlayerSettings设置 Resolution and Presentation Other Settings  Publishing Settings 本地服务器测试环境配置 问题盘点         盘点Unity在Build WebGL环境包时需要的配置以及遇到的难题 Resolution and Presentation Resolution and Presentation 界面主要设置打包后的WebGL界面的分辨率显

    2024年02月16日
    浏览(34)
  • Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d

    在Win10下编译 OpenCV 4.7.0过程中,踩了几个坑,这里记录下来,供大家参考。 1. 下载源文件 GitHub上下载OpenCV 4.7.0源文件,及opencv_contrib-4.7.0,如果不方便下载,以下是百度网盘链接,有需要可自取 链接:https://pan.baidu.com/s/1qP2aL9712YtuYM1zBeh1bg?pwd=7btf 提取码:7btf   建议三个文件

    2024年02月03日
    浏览(38)
  • 只需浏览器!在线完成Flutter从编程到打包全过程

    本文作者:林梓泓 云端 IDE 是基于云的集成开发环境,开发人员可以 远程编写运行和调试代码 ,无需本地安装,仅通过浏览器即可开发软件。 与传统本地开发相比,云端开发环境主要有以下的优势: 快速启动项目进入开发状态,无需进行繁琐的环境配置 可根据项目需求灵

    2024年02月05日
    浏览(38)
  • Unity打包WebGL的全过程及在打包和使用过程中会遇到的问题(本地测试)

    目录 概要 Unity打包WebGL PlayerSettings设置 Resolution and Presentation Other Settings  Publishing Settings 本地服务器测试环境配置 问题盘点         盘点Unity在Build WebGL环境包时需要的配置以及遇到的难题 Resolution and Presentation Resolution and Presentation 界面主要设置打包后的WebGL界面的分辨率显

    2024年02月05日
    浏览(92)
  • Ubuntu20.04 使用Python实现全过程离线语音识别(包含语音唤醒,语音转文字,指令识别,文字转语音)

      因为手头有一个项目,该项目需要在香橙派上实现语音控制,并且带有语音唤醒功能。简单来说,就是通过唤醒词唤醒香橙派,然后说出相关指令,香橙派去执行指令。   但是,在弄香橙派的时候,自带的麦克风不好使了,单独进行麦克风测试的时候是好使的,但是程

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包