vue-cli3多项目整合到一个项目中维护打包发布

一. 概述

我们公司运营项目需要做前后端分离,目前维护起来太费时,样式不统一,菜单混乱。
考虑了两个方案:

  1. [ 放弃 ] 所有系统整合到一个新系统boss中,后期项目越来越大,新增一个小功能,需要编译打包整个boss系统,增加了其他系统打包风险;
  2. [ 采用 ] 子系统整合到一个新系统boss中,每个子系统可以单独运行,编译,打包。方便后期每个子系统维护。新增功能,只需要打包该子系统。

多项目整合到一个项目中,方便后期统一管理,ui风格统一,只配置一个git仓库就可以了。

二. 实现方案

1. 项目目录

vue-cli3多项目整合到一个项目中维护打包发布_第1张图片

2. 子系统目录

vue-cli3多项目整合到一个项目中维护打包发布_第2张图片

3. 打包运行配置文件

在项目根目录下新建一个config目录,在新建一个projectsConfig.js文件。

const config = {
  screen1_m_s: {
    pages: {
      index: {
        entry: 'src/projects/screen1_m_s/main.js',
        template: 'public/index.html',
        filename: 'index.html'
      }
    },
    devServer: {
      port: 8085, // 端口地址
      open: false, // 是否自动打开浏览器页面
      host: '0.0.0.0', // 指定使用一个 host,默认是 localhost
      https: false, // 使用https提供服务
      disableHostCheck: true,
      // 设置代理
      proxy: {
        '/open_api': {
          target: '接口地址',
          changeOrigin: true
        }
      }
    }
  },
  auth1_m_s: {
    pages: {
      index: {
        entry: 'src/projects/auth1_m_s/main.js',
        template: 'public/index.html',
        filename: 'index.html'
      }
    },
    devServer: {
      port: 8080, // 端口地址
      open: false, // 是否自动打开浏览器页面
      host: '0.0.0.0', // 指定使用一个 host,默认是 localhost
      https: false, // 使用https提供服务
      disableHostCheck: true,
      // 设置代理
      proxy: {
        '/auth_api': {
          target: '接口地址',
          changeOrigin: true,
          pathRewrite: {
            // '^/auth_api': ''
          }
        }
      }
    }
  }
}
module.exports = config
4. pageage.json 配置子系统打包命令,运行命令

vue-cli3多项目整合到一个项目中维护打包发布_第3张图片

五. vue.config.js配置
/*eslint-disable */
const path = require("path")
const config = require("./config/projectsConfig.js") // 引入子系统运行打包配置
let projectName = process.env.PROJECT_NAME // 获取package.json中scripts配置的变量

function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  ...config[projectName],
  lintOnSave: true,
  // 基本路径
  // baseUrl: './',//vue-cli3.3以下版本使用
  publicPath: "./", // vue-cli3.3+新版本使用
  // 输出文件目录
  outputDir: "dist/" + projectName + "/",
  // eslint-loader 是否在保存的时候检查
  lintOnSave: true,
  // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
  assetsDir: "static"
}

你可能感兴趣的:(vue)