bianjiang 1 year ago
parent
commit
111234ef8f

+ 13 - 1
package.json

@@ -6,7 +6,10 @@
   "scripts": {
     "dev": "vite",
     "build": "vue-tsc && vite build",
-    "preview": "vite preview"
+    "preview": "vite preview",
+    "upload": "npm run uploadOss && npm run uploadServer",
+    "uploadOss": "node scripts/deployAssetsToOss.js",
+    "uploadServer": "node scripts/deployHtmlToServer.js"
   },
   "dependencies": {
     "@babel/core": "^7.21.4",
@@ -19,13 +22,16 @@
     "@types/rollup-plugin-css-only": "^3.1.0",
     "@vitejs/plugin-vue-jsx": "^3.0.1",
     "@wangeditor/editor": "^5.1.23",
+    "ali-oss": "^6.17.1",
     "ant-design-vue": "^3.2.19",
     "axios": "^1.4.0",
+    "co": "^4.6.0",
     "dayjs": "^1.11.7",
     "less": "^4.1.3",
     "less-loader": "^11.1.0",
     "pinia": "^2.0.36",
     "rollup-plugin-css-only": "^4.3.0",
+    "scp2": "^0.5.0",
     "swiper": "^9.2.4",
     "unplugin-vue-components": "^0.24.1",
     "vite-plugin-windicss": "^1.8.10",
@@ -40,5 +46,11 @@
     "typescript": "^5.0.4",
     "vite": "^4.3.2",
     "vue-tsc": "^1.4.2"
+  },
+  "exports": {
+    ".": {
+      "import": "./index.esm.js",
+      "require": "./index.cjs.js"
+    }
   }
 }

+ 84 - 0
scripts/deployAssetsToOss.js

@@ -0,0 +1,84 @@
+var OSS = require('ali-oss');
+
+var co = require('co');
+var path = require('path');
+var fs = require('fs');
+
+var cdnpath = "xihuadesign/";
+
+var client = new OSS({
+    region: 'oss-cn-chengdu',
+    accessKeyId: 'LTAI4GHqGdgY3b14jVRTzL2w',
+    accessKeySecret: 'AHubozYEzXzi4fBL0ttLJ5sN1HMKA6',
+    bucket: 'infishwaibao'
+});
+
+function GetSubFiles(dir) {
+    return new Promise((reslove, reject) => {
+        fs.readdir(dir, function (err, files) {
+            reslove(files);
+        });
+    });
+}
+
+async function GetTotalFiles(dir) {
+    let subfiles = await GetSubFiles(dir);
+
+    let files = [], len = subfiles.length;
+    let ret = [];
+    for (let i = 0; i < len; i++) {
+        let f = subfiles[i];
+
+        let fpath = `${dir}/${f}`;
+        var stat = fs.lstatSync(fpath);
+        if (!stat.isDirectory()) {
+            ret.push(fpath);
+        } else {
+            let fsubs = await GetTotalFiles(fpath);
+            let size = fsubs.length;
+            for (let k = 0; k < size; k++) {
+                ret.push(fsubs[k]);
+            }
+        }
+    }
+    return ret;
+}
+
+GetTotalFiles("dist").then((files) => {
+
+    handleFile(files);
+});
+
+async function handleFile(files) {
+    let i = 0, len = files.length;
+    for (; i < len; i++) {
+        let fpath = files[i];
+        if (path.extname(fpath) != ".map") {
+            await UploadOss(files[i]);
+        }
+    }
+}
+
+function UploadOss(src) {
+    return new Promise((resolve, reject) => {
+
+        co(function* () {
+            let fpath = src.substr(5); //去掉前面的dist
+            console.log('uploading ' + fpath);
+
+            var ret = yield client.put(cdnpath + fpath, src, { timeout: 2000000 });
+            console.log(ret.url);
+            let i = 0;
+            while (!ret) {
+                if (i++ > 3) {
+                    reject(`uploading ${src} error!`);
+                    return;
+                }
+                ret = yield client.put(cdnpath + fpath, dist, { timeout: 2000000 });
+            }
+            console.log(ret.url);
+
+            resolve(ret);
+        });
+    });
+}

+ 55 - 0
scripts/deployHtmlToServer.js

@@ -0,0 +1,55 @@
+var path = require('path')
+var fs = require('fs')
+var sftp = require('./uploadSftp')
+
+
+var rimraf = require('rimraf')
+
+//把html文件放到指定的目录
+var timestamp = Date.parse(new Date())
+
+var projName = "xihuadesign";
+
+console.log("projName--->", projName);
+
+var nativePath = `dist/temp`
+
+// var cdnpath = "";//fs.readFileSync('lib/cdnpath.txt', 'utf8')
+// if (!cdnpath) {
+//   console.error('upload cdn error no cdnpath.txt')
+// }
+//创建临时目录
+fs.mkdirSync(nativePath);
+
+//拷贝html到 nativePath
+var indexHtml = fs.readFileSync('dist/index.html');
+var adminHtml = fs.readFileSync('dist/admin.html');
+fs.writeFileSync(nativePath + path.sep + "index.html", indexHtml);
+fs.writeFileSync(nativePath + path.sep + "admin.html", adminHtml);
+
+
+let pageName = "index.html";
+
+var isRelease = true;
+var serverPath = `/var/www/html/projects/${projName}/`;
+
+//拷贝html文件到nativePath
+// fs.mkdirSync(nativePath)
+// var indexHtml = fs.readFileSync('dist/' + pageName)
+// fs.writeFileSync(nativePath + path.sep + pageName, indexHtml)
+
+var ftpUtils = new sftp({
+  remotePath: serverPath,
+  path: nativePath,
+  username: 'root',
+  password: 'MmxInfish@2020',
+  host: '124.71.139.24',
+  verbose: true
+})
+ftpUtils.apply(function () {
+
+  //删除maps文件夹
+  rimraf.sync(nativePath)
+
+  console.log(`ftp upload success!`);
+});

+ 83 - 0
scripts/uploadSftp.js

@@ -0,0 +1,83 @@
+'use strict';
+
+var ClientLib = require('scp2');
+
+var client = new ClientLib.Client();
+
+function UploadSftp(options) {
+    this.options = options;
+}
+
+UploadSftp.prototype.apply = function ( callbck ) {
+
+    var self = this;
+
+    var remotePath = self.options.remotePath;
+    var path = self.options.path;
+    var username = self.options.username;
+    var host = self.options.host;
+    var password = self.options.password;
+    var port = self.options.port || '22';
+    var verbose = self.options.verbose;
+
+    var startTime;
+    var endTime;
+
+    client.on('connect', function () {
+        // console.log('connected');
+    });
+
+    client.on('ready', function () {
+        // console.log('ready');
+        startTime = new Date();
+        console.log('[Start Uploading] ' + startTime);
+    });
+
+    client.on('transfer', function (buf, up, total) {
+    });
+
+    client.on('write', function (p) {
+        if (verbose) {
+            console.log('Transfer ' + p.source + ' => ' + p.destination);
+        }
+    });
+
+    client.on('end', function () {
+        endTime = new Date();
+        console.log('[End Uploading] ' + new Date());
+    });
+
+    client.on('error', function (err) {
+        console.log('[Error] ' + err);
+    });
+
+    client.on('close', function () {
+        console.log('Transfer with SFTP Completed in [' + (+endTime - +startTime) / 1000 + '] seconds!');
+
+        callbck && callbck();
+    });
+
+
+    var srcPath = path;
+    var destPath = username + ':' + password + '@' + host + ':' + port + ':' + remotePath;
+
+    uploadByDir(srcPath, destPath, client);
+};
+
+/**
+ * [uploadByDir: Upload Directory Directory & Cannot Get Detailed Uploading Info for Files]
+ * @param  {[String]} src    [description]
+ * @param  {[String]} dest   [description]
+ * @param  {[Object]} client [description]
+ */
+function uploadByDir(src, dest, client) {
+    ClientLib.scp(src, dest, client,
+        function (err) {
+            if (err) {
+                console.log(err);
+            }
+        }
+    );
+}
+
+module.exports = UploadSftp;

+ 2 - 2
src/modules/components/CategoryModal.tsx

@@ -1,10 +1,10 @@
 import Modal from "@/components/Provider/Modal";
 import { css } from "@linaria/core";
 import { Button, Checkbox, Form, Input, Select } from "ant-design-vue";
-import { defineComponent, onMounted, reactive, ref } from "vue";
+import { defineComponent, reactive } from "vue";
 import { any, number } from "vue-types";
-import UploadImage from "./UploadImage";
 import { uploader } from "../objects";
+import UploadImage from "./UploadImage";
 const layout = {
   labelCol: { span: 6 },
   wrapperCol: { span: 18 },

+ 3 - 3
src/modules/components/UploadImage.tsx

@@ -1,8 +1,8 @@
-import { defineComponent } from "vue";
-import { any, string } from "vue-types";
+import Image from "@/components/Image";
 import { PlusOutlined } from "@ant-design/icons-vue";
 import { css } from "@linaria/core";
-import Image from "@/components/Image";
+import { defineComponent } from "vue";
+import { string } from "vue-types";
 import { uploader } from "../objects";
 
 import { message } from "ant-design-vue";

+ 1 - 1
src/modules/objects/index.ts

@@ -9,7 +9,7 @@ export const request = createRequest({
       req.headers["authorization"] = `Bearer ${token}`;
       return req;
     },
-    response: (res: any) => {},
+    // response: (res: any) => {},
   },
 });
 export const uploader = new UploadController(request);

+ 0 - 1
src/typings/asset.d.ts

@@ -30,4 +30,3 @@ declare type BannerItem = {
   sort: number;
   isHome: bool;
 };
-declare module "quill-better-table";

+ 3 - 3
src/views/admin/banner/ArticleList.tsx

@@ -1,12 +1,12 @@
+import Modal from "@/components/Provider/Modal";
 import { useArticle, useCategory } from "@/modules";
 import { css } from "@linaria/core";
-import { Button, Card, Table, TreeNode, TreeSelect } from "ant-design-vue";
+import { Button, Table, TreeSelect } from "ant-design-vue";
 import { defineComponent, onMounted, reactive, ref } from "vue";
 import { any } from "vue-types";
-import Modal from "@/components/Provider/Modal";
 
-import { cloneDeep } from "lodash";
 import loading from "@/components/Provider/Loading";
+import { cloneDeep } from "lodash";
 export default defineComponent({
   props: {
     current: any(),

+ 3 - 3
src/views/admin/banner/EditBanner.tsx

@@ -1,6 +1,8 @@
 import Modal from "@/components/Provider/Modal";
 import { useArticle } from "@/modules";
 import UploadImage from "@/modules/components/UploadImage";
+import { uploader } from "@/modules/objects";
+import { RightOutlined } from "@ant-design/icons-vue";
 import { css } from "@linaria/core";
 import {
   Button,
@@ -10,11 +12,9 @@ import {
   RadioButton,
   RadioGroup,
 } from "ant-design-vue";
-import { RightOutlined } from "@ant-design/icons-vue";
-import { defineComponent, reactive, ref, nextTick, onMounted } from "vue";
+import { defineComponent, onMounted, reactive, ref } from "vue";
 import { object } from "vue-types";
 import ArticleList from "./ArticleList";
-import { uploader } from "@/modules/objects";
 
 export default defineComponent({
   props: {

+ 1 - 2
src/views/admin/category/CategoryTree.tsx

@@ -1,7 +1,6 @@
 import {
-  DeleteOutlined,
   FormOutlined,
-  PlusSquareOutlined,
+  PlusSquareOutlined
 } from "@ant-design/icons-vue";
 import { css } from "@linaria/core";
 import { Button, Tree } from "ant-design-vue";

+ 0 - 270
src/views/admin/components/Editor.tsx

@@ -1,270 +0,0 @@
-import { css } from "@linaria/core";
-import "quill/dist/quill.snow.css";
-import { defineComponent, onMounted, ref, watch } from "vue";
-
-import Quill from "quill";
-import { any } from "vue-types";
-import { uploader } from "@/modules/objects";
-import { message } from "ant-design-vue";
-
-export default defineComponent({
-  props: {
-    content: any(),
-  },
-  emits: ["change"],
-  setup(props, { emit }) {
-    let editor = null as any;
-    const once = ref(true);
-    onMounted(() => {
-      initEditor();
-      initTitle();
-    });
-    watch(
-      () => props.content,
-      () => {
-        if (props.content && once.value && editor) {
-          let delta = JSON.parse(props.content);
-          editor.updateContents(delta);
-          once.value = false;
-        }
-      }
-    );
-    const initEditor = () => {
-      editor = null;
-      editor = new Quill("#editor", {
-        theme: "snow",
-        placeholder: "请在这里输入",
-        modules: {
-          history: {
-            userOnly: true,
-          },
-          toolbar: {
-            container: [
-              ["bold", "italic", "underline", "strike"], //加粗,斜体,下划线,删除线
-              [{ header: [1, 2, 3, false] }], //几级标题
-              [{ indent: "-1" }, { indent: "+1" }], // 缩进
-              [{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
-              [{ align: [] }], //对齐方式
-              [{ size: ["small", false, "large", "huge"] }],
-              [{ color: [] }],
-              [{ background: [] }],
-              [{ font: [] }],
-              ["clean"], //清除字体样式
-              ["link", "image"], //上传图片
-            ],
-            handlers: {
-              image: async (value: any) => {
-                if (value) {
-                  const [file] = await uploader.selectFile({
-                    accept: "jpg,png,jpeg",
-                  });
-                  if (file.size > 5 * 1024 * 1024) {
-                    message.warn("图片不能超过5M!");
-                    return;
-                  }
-                  let url = uploader.createObjectURL(file);
-
-                  console.log(url);
-                  var range = editor.getSelection();
-                  if (range) {
-                    editor.insertEmbed(range.index, "image", url);
-                    // editor.setSelection(range.index + 1);
-                    // editor.update();
-                  }
-                } else {
-                  // editor.value.format("link", false);
-                }
-              },
-            },
-          },
-        },
-      });
-      editor.on("text-change", (data: any) => {
-        once.value = false;
-        emit("change", JSON.stringify(data));
-      });
-    };
-    const initTitle = () => {
-      const titleConfig: { [key: string]: any } = {
-        "ql-bold": "加粗",
-        "ql-color": "字体颜色",
-        "ql-font": "字体",
-        "ql-code": "插入代码",
-        "ql-italic": "斜体",
-        "ql-link": "添加链接",
-        "ql-background": "背景颜色",
-        "ql-size": "字体大小",
-        "ql-strike": "删除线",
-        "ql-underline": "下划线",
-        "ql-header": "标题",
-        "ql-indent": "缩进",
-        "ql-list": "列表",
-        "ql-align": "文本对齐",
-        "ql-formula": "公式",
-        "ql-image": "图片",
-        "ql-video": "视频",
-        "ql-clean": "清除字体样式",
-      };
-      const oToolBar = document.querySelector(".ql-toolbar");
-      const aButton = oToolBar?.querySelectorAll("button");
-      const aSelect = oToolBar?.querySelectorAll("select");
-      aButton &&
-        aButton.forEach(function (item: any) {
-          if (item.className === "ql-indent") {
-            item.value === "+1"
-              ? (item.title = "向右缩进")
-              : (item.title = "向左缩进");
-          } else {
-            item.title = titleConfig[item.classList[0]];
-          }
-        });
-      aSelect?.forEach(function (item: any) {
-        item.parentNode.title = titleConfig[item.classList[0]];
-      });
-    };
-    return () => (
-      <div class={EditorPage}>
-        <div id="editor" class={"editor_content"}></div>
-      </div>
-    );
-  },
-});
-const EditorPage = css`
-  width: 100%;
-  .editor_content {
-    width: 100%;
-    min-height: 400px;
-  }
-  .ql-snow {
-    .ql-editor h1 {
-      h1,
-      .ql-size-huge {
-        font-size: 1.8rem;
-      }
-    }
-    .ql-tooltip {
-      &::before {
-        content: "访问链接:";
-      }
-      &[data-mode="link"]::before {
-        content: "输入链接:";
-      }
-      a.ql-action::after {
-        content: "编辑";
-      }
-      a.ql-remove::before {
-        content: "删除";
-      }
-      &.ql-editing {
-        a.ql-action::after {
-          content: "保存";
-        }
-      }
-    }
-
-    .ql-picker {
-      &.ql-header {
-        .ql-picker-label {
-          &::before {
-            content: "正文";
-          }
-          &[data-value="1"]::before {
-            content: "标题1";
-          }
-          &[data-value="2"]::before {
-            content: "标题2";
-          }
-          &[data-value="3"]::before {
-            content: "标题3";
-          }
-        }
-        .ql-picker-item {
-          &::before {
-            content: "正文";
-          }
-          &[data-value="1"] {
-            &::before {
-              content: "标题1";
-              font-size: 1.8em;
-            }
-          }
-          &[data-value="2"] {
-            &::before {
-              content: "标题2";
-            }
-          }
-          &[data-value="3"] {
-            &::before {
-              content: "标题3";
-            }
-          }
-        }
-      }
-      &.ql-size {
-        .ql-picker-label {
-          &::before {
-            content: "普通";
-          }
-          &[data-value="small"]::before {
-            content: "小号";
-          }
-          &[data-value="large"]::before {
-            content: "大号";
-          }
-          &[data-value="huge"]::before {
-            content: "超大";
-          }
-        }
-        .ql-picker-item {
-          &::before {
-            content: "普通";
-          }
-          &[data-value="small"] {
-            &::before {
-              content: "小号";
-            }
-          }
-          &[data-value="large"] {
-            &::before {
-              content: "大号";
-            }
-          }
-          &[data-value="huge"] {
-            &::before {
-              font-size: 1.8rem;
-              content: "超大";
-            }
-          }
-        }
-      }
-      &.ql-font {
-        .ql-picker-label {
-          &::before {
-            content: "标准字体";
-          }
-          &[data-value="serif"]::before {
-            content: "衬线字体";
-          }
-          &[data-value="monospace"]::before {
-            content: "等宽字体";
-          }
-        }
-        .ql-picker-item {
-          &::before {
-            content: "标准字体";
-          }
-          &[data-value="serif"] {
-            &::before {
-              content: "衬线字体";
-            }
-          }
-          &[data-value="monospace"] {
-            &::before {
-              content: "等宽字体";
-            }
-          }
-        }
-      }
-    }
-  }
-`;

+ 1 - 1
src/views/admin/detail/components/DownloadEditor.tsx

@@ -5,7 +5,7 @@ import loading from "@/components/Provider/Loading";
 import Modal from "@/components/Provider/Modal";
 import { useArticle } from "@/modules";
 
-import * as dayjs from "dayjs";
+import dayjs from "dayjs";
 import { object } from "vue-types";
 import DownloadModal from "./DownloadModal";
 

+ 3 - 3
src/views/admin/detail/components/ListEditModal.tsx

@@ -1,14 +1,14 @@
 import { Button, Form, Input } from "ant-design-vue";
-import { defineComponent, onMounted, reactive } from "vue";
+import { defineComponent, reactive } from "vue";
 
 import Modal from "@/components/Provider/Modal";
 import UploadImage from "@/modules/components/UploadImage";
 
+import { useArticle } from "@/modules";
+import { uploader } from "@/modules/objects";
 import { css } from "@linaria/core";
 import { object } from "vue-types";
 import WangEditor from "../../components/WangEditor";
-import { useArticle } from "@/modules";
-import { uploader } from "@/modules/objects";
 
 export default defineComponent({
   props: {

+ 1 - 1
src/views/admin/detail/components/ListEditor.tsx

@@ -5,7 +5,7 @@ import loading from "@/components/Provider/Loading";
 import Modal from "@/components/Provider/Modal";
 import { useArticle, useCategory } from "@/modules";
 
-import * as dayjs from "dayjs";
+import dayjs from "dayjs";
 import { object } from "vue-types";
 import ListEditModal from "./ListEditModal";
 const preNames = [

+ 1 - 1
src/views/website/detail/DetailPage.tsx

@@ -9,7 +9,7 @@ export default defineComponent({
   props: {
     data: object<CategoryItem>(),
   },
-  setup(props, { emit }) {
+  setup(props) {
     const data: any = props.data || {};
     const artStore = useArticle();
     const state = reactive({

+ 2 - 3
src/views/website/detail/DownloadPage.tsx

@@ -2,10 +2,9 @@ import loading from "@/components/Provider/Loading";
 import { useArticle } from "@/modules";
 import { css } from "@linaria/core";
 import { List } from "ant-design-vue";
+import dayjs from "dayjs";
 import { defineComponent, onMounted } from "vue";
 import { object } from "vue-types";
-import dayjs from "dayjs";
-import { uploader } from "@/modules/objects";
 export default defineComponent({
   props: {
     data: object<CategoryItem>(),
@@ -44,7 +43,7 @@ export default defineComponent({
               grid={{ column: 1, gutter: 0 }}
               dataSource={artStore.listController.state.list}
               rowKey={(item) => item._id}
-              renderItem={({ item, index }) => {
+              renderItem={({ item }) => {
                 const isImg = isImage(item.summary);
                 return (
                   <List.Item>

+ 2 - 2
src/views/website/detail/List.tsx

@@ -1,8 +1,8 @@
 import { defineComponent, reactive } from "vue";
-import { array, bool, object, string } from "vue-types";
+import { array, bool, object } from "vue-types";
 
-import { List } from "ant-design-vue";
 import { css } from "@linaria/core";
+import { List } from "ant-design-vue";
 import { useRoute, useRouter } from "vue-router";
 
 export default defineComponent({

+ 10 - 10
src/views/website/detail/ListPage.tsx

@@ -1,12 +1,12 @@
+import Image from "@/components/Image";
+import loading from "@/components/Provider/Loading";
 import { useArticle } from "@/modules";
 import { css } from "@linaria/core";
-import loading from "@/components/Provider/Loading";
-import { defineComponent, onMounted, reactive, watch } from "vue";
-import Image from "@/components/Image";
+import dayjs from "dayjs";
+import { defineComponent, onMounted, watch } from "vue";
+import { useRoute, useRouter } from "vue-router";
 import { any, object } from "vue-types";
 import List from "./List";
-import { useRoute, useRouter } from "vue-router";
-import dayjs from "dayjs";
 const teacherList = [
   "6464ae7a8dcb7ddb98b57a28",
   "6464b7ca8dcb7ddb98b57a63",
@@ -23,7 +23,7 @@ export default defineComponent({
     data: object<CategoryItem>(),
     category: object<CategoryItem>(),
   },
-  setup(props, { emit }) {
+  setup(props) {
     const data: any = props.data || {};
     const category: any = props.category || {};
     const artStore = useArticle();
@@ -51,7 +51,7 @@ export default defineComponent({
       await artStore.listController.loadPage(page * 1);
       loading.hidden();
     };
-    const itemRender = (item: any, index: number) => {
+    const itemRender = (item: any) => {
       if (teacherList.includes(category._id)) {
         return <TeacherItem item={item} key={item._id} />;
       }
@@ -66,8 +66,8 @@ export default defineComponent({
               actions={artStore.listController}
             >
               {{
-                item: (item: any, index: number) => {
-                  return itemRender(item, index);
+                item: (item: any) => {
+                  return itemRender(item);
                 },
               }}
             </List>
@@ -81,7 +81,7 @@ const TeacherItem = defineComponent({
   props: {
     item: any(),
   },
-  setup(props, ctx) {
+  setup(props) {
     const { item } = props;
     const router = useRouter();
     const route = useRoute();

+ 1 - 1
src/views/website/detail/PageTabsLow.tsx

@@ -9,7 +9,7 @@ export default defineComponent({
     data: any(),
     activeKey: string(),
   },
-  setup(props, { emit }) {
+  setup(props) {
     const router = useRouter();
     const route = useRoute();
     return () => {

+ 1 - 1
src/views/website/home/components/Talents.tsx

@@ -39,7 +39,7 @@ export default defineComponent({
       const res = children.map((e: any) => {
         return getList(e._id);
       });
-      Promise.all(res).then((e) => {
+      Promise.all(res).then(() => {
         state.tabs = children;
         state.activeKey = children[0]._id;
       });

+ 1 - 1
src/views/website/home/components/Works.tsx

@@ -38,7 +38,7 @@ export default defineComponent({
       const res = children.map((e: any) => {
         return getList(e._id);
       });
-      Promise.all(res).then((e) => {
+      Promise.all(res).then(() => {
         state.tabs = children;
         state.activeKey = children[0]._id;
       });

+ 2 - 2
tsconfig.json

@@ -17,8 +17,8 @@
 
     /* Linting */
     "strict": true,
-    "noUnusedLocals": true,
-    "noUnusedParameters": true,
+    "noUnusedLocals": false,
+    "noUnusedParameters": false,
     "noFallthroughCasesInSwitch": true,
     "paths": {
       "@/*": ["src/*"]

+ 4 - 1
vite.config.ts

@@ -10,7 +10,10 @@ import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";
 import { resolve } from "path";
 // https://vitejs.dev/config/
 export default defineConfig({
-  base: process.env.NODE_ENV == "production" ? "./" : "./",
+  base:
+    process.env.NODE_ENV == "production"
+      ? "//infishwaibao.oss-cn-chengdu.aliyuncs.com/xihuadesign/"
+      : "./",
   build: {
     rollupOptions: {
       input: {

File diff suppressed because it is too large
+ 639 - 13
yarn.lock


Some files were not shown because too many files changed in this diff