zhangzengfei
2020-10-27 4652707705b3277d0341a945bff00960b3d905cc
release V1.1.0
修改webpack,分离了chunkjs到各个应用
4个文件已修改
204 ■■■■ 已修改文件
appPack.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
appPack.js
@@ -79,4 +79,7 @@
    copyDirectory("dist/view/" + app, baseDir + "/" + app + "/view/" + app, copy)
    copyDirectory("dist/images/" + app, baseDir + "/" + app + "/images/" + app, copy)
  }
})
})
// 移动element woff
copyDirectory("dist/fonts/", "dist/css/fonts/", copy)
package.json
@@ -1,6 +1,6 @@
{
  "name": "vue-smart-ai",
  "version": "1.0.1",
  "version": "1.1.0",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve",
public/index.html
@@ -1,22 +1,17 @@
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <link
      rel="icon"
      type="image/png"
      href="<%= BASE_URL %>favicon.png"
      sizes="32x32"
    />
    <link rel="stylesheet" href="/fonts/alibaba/iconfont.css">
    <link rel="stylesheet" href="/css/element-variables.scss">
    <title><%= htmlWebpackPlugin.options.title %></title>
    <style src="/css/common.scss" lang="scss"></style>
    <style src="/css/overried.scss" lang="scss"></style>
    <style >
    html,body {
<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
  <link rel="icon" type="image/png" href="<%= BASE_URL %>favicon.png" sizes="32x32" />
  <link rel="stylesheet" href="/fonts/alibaba/iconfont.css">
  <title><%= htmlWebpackPlugin.options.title %></title>
  <style>
    html,
    body {
      font-family: "Avenir", Helvetica, Arial, sans-serif;
      -webkit-font-smoothing: antialiased;
      -moz-osx-font-smoothing: grayscale;
@@ -26,11 +21,13 @@
      height: 100%;
      font-size: 12px;
    }
    .el-button--primary:hover,
    .el-button--primary:focus {
      background: #2249b4;
      border-color: #2249b4;
    }
    .el-button--warning:hover,
    .el-button--warning:focus {
      background: #fd780b;
@@ -46,6 +43,7 @@
    .el-button--info {
      color: #222222;
    }
    .el-button--info:hover,
    .el-button--info:focus {
      background: rgb(190, 190, 190);
@@ -62,11 +60,13 @@
      border-color: #e9e9eb;
      color: #909399;
    }
    /* reset */
    html {
      color: #000;
      background: #fff;
    }
    body,
    div,
    dl,
@@ -91,48 +91,61 @@
      margin: 0;
      padding: 0;
    }
    /* body {
      font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;
    } */
    img {
      border: none;
    }
    em,
    strong {
      font-style: normal;
      font-weight: normal;
    }
    li {
      list-style: none;
    }
    table {
      border-collapse: collapse;
      border-spacing: 0;
    }
    h1 {
      font-size: 18px;
    }
    h2 {
      font-size: 16px;
    }
    h3 {
      font-size: 14px;
    }
    h4,
    h5,
    h6 {
      font-size: 100%;
    }
    q:before,
    q:after {
      content: "";
    } /* 消除q前后的内容 */
    }
    /* 消除q前后的内容 */
    button,
    input,
    select,
    textarea {
      font-size: 100%;
    } /* 使得表单元素在 ie 下能继承字体大小 */
    }
    /* 使得表单元素在 ie 下能继承字体大小 */
    input,
    button,
    textarea,
@@ -144,26 +157,32 @@
      font-style: inherit;
      font-weight: inherit;
    }
    address,
    cite,
    dfn,
    em,
    var {
      font-style: normal;
    } /* 将斜体扶正 */
    }
    /* 将斜体扶正 */
    /* link */
    a {
      color: #3d68e1;
      text-decoration: none;
    }
    a:hover {
      color: #2249b4;
      text-decoration: underline;
    }
    .fade-enter-active,
    .fade-leave-active {
      transition: opacity 0.5s;
    }
    .fade-enter,
    .fade-leave-active {
      opacity: 0;
@@ -189,16 +208,24 @@
      box-shadow: inset 0 0 3px rgba(245, 243, 243, 0.3);
      background-color: rgba(160, 158, 158, 0.8);
    }
    .fade-enter-active,
    .fade-leave-active {
      transition: opacity 0.5s;
    }
    .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
    .fade-enter,
    .fade-leave-to
    /* .fade-leave-active below version 2.1.8 */
      {
      opacity: 0;
    }
    .window {
      z-index: 10 !important;
    }
    .el-card__body {
      box-sizing: border-box;
    }
@@ -206,7 +233,7 @@
    .is-dark {
      background: #00000090 !important;
    }
    .el-tooltip__popper {
      border-radius: 0px;
      padding: 5px 10px;
@@ -215,24 +242,31 @@
    .atooltip.el-tooltip__popper[x-placement^="bottom"] .popper__arrow {
      border-bottom-color: #20202090;
    }
    .atooltip.el-tooltip__popper[x-placement^="bottom"] .popper__arrow:after {
      border-bottom-color: #68666690;
    }
    .atooltip.el-tooltip__popper[x-placement^="top"] .popper__arrow {
      border-top-color: #20202090;
    }
    .atooltip.el-tooltip__popper[x-placement^="top"] .popper__arrow:after {
      border-top-color: #68666690;
    }
    .atooltip.el-tooltip__popper[x-placement^="left"] .popper__arrow {
      border-left-color: #20202090;
    }
    .atooltip.el-tooltip__popper[x-placement^="left"] .popper__arrow:after {
      border-left-color: #68666690;
    }
    .atooltip.el-tooltip__popper[x-placement^="right"] .popper__arrow {
      border-right-color: #20202090;
    }
    .atooltip.el-tooltip__popper[x-placement^="right"] .popper__arrow:after {
      border-right-color: #68666690;
    }
@@ -241,11 +275,14 @@
      overflow-y: hidden;
      overflow-x: hidden;
    }
    .el-menu-vertical-demo::-webkit-scrollbar {
      /*滚动条整体样式*/
      width: 4px; /*高宽分别对应横竖滚动条的尺寸*/
      width: 4px;
      /*高宽分别对应横竖滚动条的尺寸*/
      height: 4px;
    }
    .el-menu-vertical-demo::-webkit-scrollbar-thumb {
      /*滚动条里面小方块*/
      border-radius: 5px;
@@ -253,6 +290,7 @@
      -webkit-box-shadow: inset 0 0 5px rgba(157, 165, 183, 0);
      background: rgb(202, 201, 201);
    }
    .el-menu-vertical-demo::-webkit-scrollbar-track {
      /*滚动条里面轨道*/
      box-shadow: inset 0 0 5px rgba(157, 165, 183, 0);
@@ -260,9 +298,11 @@
      border-radius: 0;
      background: rgb(255, 255, 255);
    }
    .el-menu-vertical-demo::-webkit-scrollbar-thumb:hover {
      background: rgba(0, 0, 0, 0.4);
    }
    .el-menu-vertical-demo:hover {
      overflow-y: visible;
      overflow-x: hidden;
@@ -285,14 +325,16 @@
      border-radius: 2px;
    }
    .el-message-box .el-message-box__btns .el-button--primary{
      background-color:#3d68e1;
      border-color:#3d68e1;
    .el-message-box .el-message-box__btns .el-button--primary {
      background-color: #3d68e1;
      border-color: #3d68e1;
    }
    .el-message-box .el-message-box__btns .el-button--primary:hover{
      background-color:#2249b4;
      border-color:#2249b4;
    .el-message-box .el-message-box__btns .el-button--primary:hover {
      background-color: #2249b4;
      border-color: #2249b4;
    }
    .btn-icon {
      cursor: pointer;
    }
@@ -301,36 +343,45 @@
      filter: drop-shadow(0 0 0 #fff);
      opacity: 0.8;
    }
    .clearfix::after{
    .clearfix::after {
      content: '';
      display: block;
      height: 0;
      clear: both;
    }
    .mb10 {
      margin-bottom: 10px;
    }
    .mt15 {
      margin-top: 15px;
    }
    .pl20 {
      padding-left: 20px;
    }
    .cursor-pointer{
    .cursor-pointer {
      cursor: pointer;
    }
    /* .flex-box{
      display: flex;
    } */
    .el-button--primary {
      color: #FFFFFF;
      background-color: #3D68E1!important;
      border-color: #3D68E1!important;
      background-color: #3D68E1 !important;
      border-color: #3D68E1 !important;
    }
    .el-button--primary:hover,.el-button--primary:focus {
      background: #2249b4!important;
      border-color: #2249b4!important;
    .el-button--primary:hover,
    .el-button--primary:focus {
      background: #2249b4 !important;
      border-color: #2249b4 !important;
    }
    /* .el-input>input,.el-date-editor.el-input__inner{
      border-color: #dcdfe6!important;
    } */
@@ -344,41 +395,45 @@
      outline: none!important;
      border-color: #3D68E1!important;
    } */
    .el-select-dropdown__list{
    .el-select-dropdown__list {
      text-align: left;
    }
    .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before{
      margin-left: -8px!important;
    .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before {
      margin-left: -8px !important;
      margin-right: 0;
    }
    .el-input.is-disabled .el-input__suffix{
    .el-input.is-disabled .el-input__suffix {
      visibility: hidden;
    }
    .form-tip{
    .form-tip {
      color: #999;
      position: relative;
      text-align: left;
      padding-left: 10px;
    }
    .form-tip:before{
      content:'*';
    .form-tip:before {
      content: '*';
      position: absolute;
      top: 0;
      left: 0;
      color: #f90;
      font-size: 14px;
    }
    </style>
  </style>
  </head>
  <body>
    <noscript>
      <strong
        >We're sorry but multiple-pages doesn't work properly without JavaScript
        enabled. Please enable it to continue.</strong
      >
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>
</head>
<body>
  <noscript>
    <strong>We're sorry but multiple-pages doesn't work properly without JavaScript
      enabled. Please enable it to continue.</strong>
  </noscript>
  <div id="app"></div>
  <!-- built files will be auto injected -->
</body>
</html>
vue.config.js
@@ -1,18 +1,39 @@
'use strict'
const glob = require('glob')
const pages = {}
const IS_VENDOR = /[\\/]node_modules[\\/]/
const pageVendor = {}
glob.sync('./src/pages/**/main.ts').forEach(path => {
  const chunk = path.split('./src/pages/')[1].split('/main.ts')[0]
  const chunk_vendor = `${chunk}-vendors`
  const chunk_common = `${chunk}-common`
  pages[chunk] = {
    entry: path,
    template: 'public/index.html',
    title: chunk == 'desktop/index' ? 'SmartAI' : chunk,
    chunks: ['chunk-vendors', 'chunk-common', chunk]
    chunks: [chunk_vendor, 'chunk-common', chunk]
  }
  if (chunk != 'index') {
    pages[chunk].filename = 'view/' + chunk + '.html'
  }
  pageVendor[chunk_vendor] = {
    name: chunk_vendor,
    priority: -11,
    chunks: c => c.name === chunk,
    test: /\.js$/,
    enforce: true
  }
  // pageVendor[chunk_common] = {
  //   name: chunk_common,
  //   priority: -20,
  //   chunks: 'initial',
  //   minChunks: 2,
  //   reuseExistingChunk: true,
  //   enforce: true
  // }
})
module.exports = {
  pages,
@@ -29,6 +50,13 @@
        }
      ])
    }
    config.optimization.splitChunks({
      cacheGroups: pageVendor
    })
    // config.module.rule('fonts').use('url-loader').loader('file-loader').options({ name: 'fonts/[name].[ext]', publicPath: '../' })
  },
  productionSourceMap: false,
  filenameHashing: false,