技术方案:手动输入不同的命令,启动不同项目。实现这种能力本篇文章是通过不同路由划分,进而实现不同项目的划分。所以简单来说就是通过输入不同命令行在webpack中找到不同项目的路由,进而打不同项目的包,实现项目隔离。
一、命令行构造
"serve:aaa": "cross-env VUE_APP_SYS=aaa VUE_APP_IGNORE_SYS=bbb vue-cli-service serve --open",
cross-env库介绍
cross-env 是一个用来跨平台地设置环境变量的 Node.js 库。它的主要目的是解决不同操作系统(如 Windows 和 Unix 系统如 macOS/Linux)在命令行中设置环境变量时语法不一致的问题。
二、Webpack改造
plugins: [new webpack.IgnorePlugin({checkResource (resource) {const ignoreSys = process.env.VUE_APP_IGNORE_SYS.split(',')for(const sys of ignoreSys) {return resource.includes(`@/router/${sys}/index`)}return false},})]
使用IgnorePlugin插件,把想要的项目总路由引入
三、路由改造并导出
// 根据指定不同的系统加载不同系统路由
switch (process.env.VUE_APP_SYS) {case 'aaa':routerObj = require('@/router/aaa/index')breakcase 'bbb':routerObj = require('@/router/bbb/index')breakdefault:throw new Error('未指定系统类型,请设置 VUE_APP_SYS 环境变量')
}export default routerObj.router
根据输入命令的不同值,引入不同路由文件。
下面是aaa路由目录下的组织方式