最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【VUE项目维护】多个项目提取共用组件的解决方案

    正文概述 掘金(针线)   2021-02-26   963

    需求场景

    通常开发项目,会有多个管理后台或者相似的项目,我们无需每次都重新创建vue-cli脚手架。我们可以将多个项目放在同一个脚手架里,统一管理。

    合并项目

    1. 目录结构

    【VUE项目维护】多个项目提取共用组件的解决方案

    2. 相关文件配置

    • appConfig.js文件,此文件是两个项目的配置文件,最后会插入到vue.config.js文件里

      const appName = require("./app.js")
      const path = require("path")
          
      function resolve(dir) {
        return path.join(__dirname, dir)
      }
      const config = {
        cangjie: {
          pages: {
            index: {
              entry: "src/app/cangjie/main.js",
              template: "public/cangjie.html",
              filename: "index.html"
            }
          },
          outputDir: "dist/cangjie/",
          devServer: {},
          chainWebpack: (config) => {
            config.entry.app = ["babel-polyfill", "../src/app/cangjie/main.js"]
            config.resolve.alias.set("@", resolve("../src/app/cangjie/"))
          }
        },
        weixin: {
          pages: {
            index: {
              entry: "src/app/weixin/main.js",
              template: "public/weixinIndex.html",
              filename: "index.html",
            }
          },
          outputDir: "dist/weixin/",
          devServer: {},
          chainWebpack: (config) => {
            config.entry.app = ["babel-polyfill", "../src/app/weixin/main.js"]
            config.resolve.alias.set("@", resolve("../src/app/weixin/"))
          }
        }
      }
          
          
      module.exports = config[appName.name]
      
    • vue.config.js

      // vue.config.js 通过读取appConfig来配置项目
      const conf = require('./config/appConfig');
          
      module.exports = {
        pages: conf.pages,
        publicPath: './',
        outputDir: conf.outputDir,
        assetsDir: 'static',
        devServer: conf.devServer,
        productionSourceMap: false,
        chainWebpack: conf.chainWebpack,
        configureWebpack: conf.configureWebpack
      };
      
    • dev.js文件

      const appName = process.argv[2] // node config/dev.js cangjie 拿到命令行 node命令行的第二个参数也就是star
          
      const fs = require("fs") // 引入文件模块
          
      fs.writeFileSync("./config/app.js", `exports.name = "${appName}"`) // 将模块名称写入文件app.js
          
      const exec = require("child_process").execSync; // 开启一个子进程
      exec("npm run serve", { stdio: "inherit" }); // 执行vuecli3.0+ 的启动脚本
      
    • build.js文件

      // build.js 打包文件 和dev文件几乎一致,不做过多解释
      const appName = process.argv[2]
          
      const fs = require("fs")
          
      fs.writeFileSync("./config/app.js", `exports.name = "${appName}"`)
          
      const exec = require("child_process").execSync;
      exec("npm run build", { stdio: "inherit" });
          
          
      
    • app.js

      // app.js 很简单,抛出模块的名称
      exports.name = "cangjie"
          
      
    • package.json文件配置执行命令

      // package.json
      "scripts": {
          "serve": "vue-cli-service serve",
          "build": "vue-cli-service build",
          "lint": "vue-cli-service lint"
          "dev:star": "node config/dev.js cangjie",
          "dev:country": "node config/dev.js weixin",
          "build:star": "node config/build.js cangjie",
          "build:country": "node config/build.js weixin"
        }
      

    3. 执行命令

    npm run dev:cangjie 

    npm run build:cangjie 这样就可以了

    4. 梳理一下流程

    1. npm run dev:cangjie
    2. 读取dev文件
    3. 将star写入app.js
    4. 执行 npm run serve
    5. 读取vue.config.js文件
    6. 在vue.config.js中读取appConfig文件拿到相应项目配置
    7. 执行项目编译操作,并且启动项目
    

    起源地下载网 » 【VUE项目维护】多个项目提取共用组件的解决方案

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元