zhangyuhan 1 жил өмнө
parent
commit
6550aaa9f7

+ 2 - 2
apps/jy-pc/.env.development

@@ -1,3 +1,3 @@
 NODE_ENV=development
-VUE_APP_BASE_API=''
-VUE_APP_BASE_URL='/'
+VITE_APP_BASE_API=''
+VITE_APP_BASE_URL='/'

+ 2 - 2
apps/jy-pc/.env.production

@@ -1,3 +1,3 @@
 NODE_ENV=production
-VUE_APP_BASE_API=''
-VUE_APP_BASE_URL='/page_jy_pc'
+VITE_APP_BASE_API=''
+VITE_APP_BASE_URL='/page_jy_pc'

+ 4 - 0
apps/jy-pc/.eslintignore

@@ -1,2 +1,6 @@
 /src/assets/fonts
 /src/assets/tinymce
+/public
+/config
+vue.config.js
+/postcss.config.js

+ 32 - 0
apps/jy-pc/.eslintrc.cjs

@@ -0,0 +1,32 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+module.exports = {
+  root: true,
+  globals: {
+    loginflag: true,
+    $: true,
+    JyObj: true,
+    _hmt: true,
+    vComponentChart: true
+  },
+  plugins: ['vue'],
+  rules: {
+    'no-var': 'error',
+    'no-console': 'warn',
+    'no-debugger': 'warn',
+    eqeqeq: 'warn',
+    indent: [
+      'error',
+      2,
+      {
+        SwitchCase: 1
+      }
+    ],
+    quotes: ['error', 'single']
+  },
+  extends: [
+    'plugin:vue/essential',
+    'eslint:recommended',
+    '@vue/eslint-config-prettier'
+  ]
+}

+ 0 - 21
apps/jy-pc/.eslintrc.js

@@ -1,21 +0,0 @@
-module.exports = {
-  root: true,
-  env: {
-    node: true
-  },
-  extends: [
-    'plugin:vue/essential',
-    '@vue/standard'
-  ],
-  parserOptions: {
-    parser: 'babel-eslint'
-  },
-  rules: {
-    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
-    indent: ['error', 2, {
-      "SwitchCase": 1
-    }],
-    quotes: ['error', 'single']
-  }
-}

+ 0 - 7
apps/jy-pc/babel.config.js

@@ -1,7 +0,0 @@
-// https://www.npmjs.com/package/babel-plugin-component
-module.exports = {
-  presets: [
-    '@vue/cli-plugin-babel/preset'
-  ],
-  plugins: []
-}

+ 55 - 0
apps/jy-pc/index.html

@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+
+<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" href="/favicon.ico">
+  <title>剑鱼标讯</title>
+    <% if (isDev) { %>
+    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/bootstrap.min.css" rel="stylesheet">
+    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/bootswatch.min.css" rel="stylesheet">
+      <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/font.css?v=6302" rel="stylesheet">
+      <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/jy.css?v=6302" rel="stylesheet">
+      <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/common.css?v=6302" rel="stylesheet">
+    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/animate.css" rel="stylesheet">
+    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/unicorn.main.css" rel="stylesheet" />
+    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/unicorn.grey.css" rel="stylesheet" />
+      <script ignore src="https://jybx2-webtest.jydev.jianyu360.com/js/jquery-3.2.1.min.js?v=6302"></script>
+    <script ignore src="https://jybx2-webtest.jydev.jianyu360.com/js/jquery.cookie.js"></script>
+    <script ignore src="https://jybx2-webtest.jydev.jianyu360.com/js/bootstrap.min.js"></script>
+
+      <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/css/reset.css?v=6302' rel="stylesheet" type="text/css"/>
+    <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/pccss/reset_pc.css' rel="stylesheet" type="text/css"/>
+      <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/css/pc.css?v=6302' rel="stylesheet"/>
+      <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/pccss/public-nav-1200.css?v=6302' rel="stylesheet" type="text/css"/>
+
+      <script src=//cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js></script>
+  <% } %>
+
+  <!-- 使用CDN的CSS文件 -->
+      <link rel="stylesheet" href="https://cdn-common.jianyu360.com/cdn/assets/iconfont/pc/23.9.28/iconfont.css">
+
+      <!-- 使用CDN的CSS文件 -->
+      <% for (var i in cdn && cdn.css) { %>
+      <link rel="stylesheet" href="<%= cdn.css[i] %>" />
+  <% } %>
+  <!-- 使用CDN的JS文件 -->
+  <% for (var i in cdn && cdn.js) { %>
+  <script type="text/javascript" src="<%= cdn.js[i] %>"></script>
+  <% } %>
+  <script ignore src="/common-module/public/head.js"></script>
+</head>
+
+<body>
+  <noscript>
+      <strong>JavaScript enabled. Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <script type="module" src="/src/main.js"></script>
+  <!-- built files will be auto injected -->
+  <script ignore src="/common-module/public/fotter.js"></script>
+</body>
+
+</html>

+ 25 - 34
apps/jy-pc/package.json

@@ -3,50 +3,41 @@
   "version": "0.1.0",
   "private": true,
   "scripts": {
-    "serve": "vue-cli-service serve --port 8080",
-    "build": "vue-cli-service build --mode production",
-    "lint": "vue-cli-service lint",
-    "lint:fix": "vue-cli-service lint --fix",
-    "analyzer": "use_analyzer=true vue-cli-service build --mode production",
-    "analyze": "cross-env use_analyzer=true vue-cli-service build --mode production"
+    "dev": "vite",
+    "build": "vite build",
+    "preview": "vite preview --port 4173",
+    "lint": "eslint . --fix"
   },
   "dependencies": {
-    "@jianyu/easy-fix-sub-app": "^0.0.1",
-    "@jianyu/easy-inject-qiankun": "^0.1.10",
+    "@jianyu/easy-fix-sub-app": "^0.0.2",
+    "@jianyu/easy-inject-qiankun": "^0.1.11",
     "@tinymce/tinymce-vue": "^3.2.8",
     "core-js": "^3.6.5",
     "element-ui": "^2.15.16-rc",
     "lodash": "^4.17.21",
     "moment": "^2.29.1",
-    "qs": "^6.10.3",
+    "qs": "^6.11.2",
     "tinymce": "^5.10.3",
     "vue-cookies": "^1.7.4",
-    "vuex": "^3.4.0"
+    "vuex": "^3.6.2"
   },
   "devDependencies": {
-    "@vue/cli-plugin-babel": "~4.5.13",
-    "@vue/cli-plugin-eslint": "~4.5.13",
-    "@vue/cli-plugin-router": "~4.5.13",
-    "@vue/cli-plugin-vuex": "~4.5.13",
-    "@vue/cli-service": "~4.5.13",
-    "@vue/eslint-config-standard": "^5.1.2",
-    "autoprefixer": "9.8.8",
-    "babel-eslint": "^10.1.0",
-    "babel-plugin-component": "^1.1.1",
-    "cross-env": "^7.0.3",
-    "eslint": "^6.7.2",
-    "eslint-plugin-import": "^2.20.2",
-    "eslint-plugin-node": "^11.1.0",
-    "eslint-plugin-promise": "^4.2.1",
-    "eslint-plugin-standard": "^4.0.0",
-    "eslint-plugin-vue": "^6.2.2",
-    "less": "^4.1.2",
-    "less-loader": "^7.3.0",
-    "sass": "^1.34.0",
-    "sass-loader": "^10.1.1",
-    "uglifyjs-webpack-plugin": "^2.2.0",
-    "vue-cli-plugin-single-spa": "^1.0.1",
-    "vue-template-compiler": "^2.6.11",
-    "webpack-bundle-analyzer": "^4.4.1"
+    "@rushstack/eslint-patch": "^1.1.0",
+    "@vitejs/plugin-legacy": "^4.0.4",
+    "@vitejs/plugin-vue2": "^2.2.0",
+    "vite-plugin-eslint": "^1.8.1",
+    "@vue/eslint-config-prettier": "^7.0.0",
+    "autoprefixer": "^10.4.14",
+    "eslint": "^8.5.0",
+    "eslint-plugin-vue": "^9.0.0",
+    "jquery": "^3.6.0",
+    "prettier": "^2.5.1",
+    "sass": "^1.71.1",
+    "terser": "^5.14.2",
+    "unplugin-vue-components": "^0.25.1",
+    "vite": "^4.3.9",
+    "vite-plugin-ejs": "^1.6.4",
+    "vite-plugin-externals": "^0.6.2",
+    "vite-plugin-legacy-qiankun": "^0.0.12"
   }
 }

+ 0 - 61
apps/jy-pc/public/index.html

@@ -1,61 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-CN">
-
-<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, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, viewport-fit=cover">
-  <meta name="browsermode" content="application">
-  <meta name="x5-orientation" content="portrait">
-  <meta name="screen-orientation" content="portrait">
-  <meta name="x5-page-mode" content="app">
-  <meta name="apple-mobile-web-app-capable" content="yes">
-  <meta name="apple-mobile-web-app-status-bar-style" content="black">
-  <meta name="format-detection" content="telephone=no">
-  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
-  <title>剑鱼标讯</title>
-  <meta name="keywords"></meta>
-  <meta name="description"></meta>
-  <!-- 模拟引入:只有development才会开启 -->
-  <% if (process.env.NODE_ENV === 'development') { %>
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/bootstrap.min.css" rel="stylesheet">
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/bootswatch.min.css" rel="stylesheet">
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/font.css" rel="stylesheet">
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/jy.css" rel="stylesheet">
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/common.css" rel="stylesheet">
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/animate.css" rel="stylesheet">
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/unicorn.main.css" rel="stylesheet" />
-    <link ignore href="https://jybx2-webtest.jydev.jianyu360.com/css/unicorn.grey.css" rel="stylesheet" />
-    <script ignore src="https://jybx2-webtest.jydev.jianyu360.com/js/jquery-3.2.1.min.js"></script>
-    <script ignore src="https://jybx2-webtest.jydev.jianyu360.com/js/jquery.cookie.js"></script>
-    <script ignore src="https://jybx2-webtest.jydev.jianyu360.com/js/bootstrap.min.js"></script>
-
-    <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/css/reset.css' rel="stylesheet" type="text/css"/>
-    <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/pccss/reset_pc.css' rel="stylesheet" type="text/css"/>
-    <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/css/pc.css' rel="stylesheet"/>
-    <link ignore href='https://jybx2-webtest.jydev.jianyu360.com/pccss/public-nav-1200.css' rel="stylesheet" type="text/css"/>
-  <% } %>
-
-  <!-- 使用CDN的CSS文件 -->
-  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
-  <link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
-  <% } %>
-  <!-- 使用CDN的JS文件 -->
-  <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
-  <script type="text/javascript" src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
-  <% } %>
-  <script ignore src="/common-module/public/head.js"></script>
-</head>
-
-<body>
-  <noscript>
-    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
-      Please enable it to continue.</strong>
-  </noscript>
-  <div id="app"></div>
-  <!-- built files will be auto injected -->
-  <script ignore src="/common-module/public/fotter.js"></script>
-</body>
-
-</html>

+ 21 - 9
apps/jy-pc/src/components/toast/Toast.vue → apps/jy-pc/src/components/toast/CustomToast.vue

@@ -1,20 +1,32 @@
 <template>
-  <div class="toast-wrap" v-if="showWrap" :class="showContent ?'fade-in':'fade-out'">{{text}}</div>
+  <div
+    class="toast-wrap"
+    v-if="showWrap"
+    :class="showContent ? 'fade-in' : 'fade-out'"
+  >
+    {{ text }}
+  </div>
 </template>
 
+<script>
+export default {
+  name: 'toast'
+}
+</script>
+
 <style lang="scss" scoped>
-.toast-wrap{
+.toast-wrap {
   position: fixed;
   left: 50%;
-  top:50%;
-  background: rgba(0,0,0,0.65);
+  top: 50%;
+  background: rgba(0, 0, 0, 0.65);
   padding: 16px 32px;
   border-radius: 8px;
-  transform: translate(-50%,-50%);
-  color:#fff;
+  transform: translate(-50%, -50%);
+  color: #fff;
   font-size: 16px;
   z-index: 9999;
-  &.fade-in{
+  &.fade-in {
     animation: animate_in 0.25s;
   }
   &.fade-out {
@@ -26,7 +38,7 @@
   0% {
     opacity: 0;
   }
-  100%{
+  100% {
     opacity: 1;
   }
 }
@@ -34,7 +46,7 @@
   0% {
     opacity: 1;
   }
-  100%{
+  100% {
     opacity: 0;
   }
 }

+ 28 - 18
apps/jy-pc/src/main.js

@@ -5,35 +5,45 @@ import router from './router'
 import store from './store'
 import VueCookies from 'vue-cookies'
 import ELEMENT, { MessageBox, Message, Loading } from 'element-ui'
-import '@/assets/style/element.theme.scss'
+import 'element-ui/lib/theme-chalk/index.css'
 import '@/assets/fonts/index.scss'
 import './utils/common'
-import Toast from '@/utils/toast/'
+import CustomToast from '@/utils/toast/'
 import { easySubAppRegister } from '@jianyu/easy-inject-qiankun'
 import { fixGetComputedStyle } from '@jianyu/easy-fix-sub-app'
 
 Vue.config.productionTip = false
 Vue.use(VueCookies)
-Vue.use(Toast)
+Vue.use(CustomToast)
 Vue.prototype.$messageBox = MessageBox
 Vue.prototype.$message = Message
-if (process.env.NODE_ENV !== 'production') {
+if (import.meta.env.NODE_ENV !== 'production') {
   Vue.use(ELEMENT)
   Vue.use(Loading.directive)
 }
 
-export const {
-  bootstrap,
-  mount,
-  unmount
-} = easySubAppRegister({
-  Vue,
-  router,
-  store,
-  App,
-  el: '#app'
-}, {
-  bootstrap () {
-    fixGetComputedStyle()
+//  适配 vite-plugin-qiankun
+
+const global = (0, eval)('window')
+const name = 'web-pc'
+global.legacyQiankun = global.legacyQiankun || {}
+global.legacyQiankun[name] = global.legacyQiankun[name] || {}
+
+const app = easySubAppRegister(
+  {
+    Vue,
+    router,
+    store,
+    App,
+    el: '#app'
+  },
+  {
+    bootstrap() {
+      fixGetComputedStyle()
+    }
   }
-})
+)
+
+global.legacyQiankun[name].lifecyle = app
+
+export const { bootstrap, mount, unmount } = app

+ 14 - 15
apps/jy-pc/src/router/router.js

@@ -12,24 +12,21 @@ let routes = [
   }
 ]
 
-const routerContext = require.context('./modules', true, /\.js$/)
-routerContext.keys().forEach(route => {
-  if (route.startsWith('./index')) {
-    return
-  }
-  const moduleName = route.replace(/.*\/(\w+?)\.\w+$/, '$1')
-  const routerModule = routerContext(route).default
-  routerModule.forEach(v => {
+const files = import.meta.globEager('./modules/*.js')
+for (const path in files) {
+  const moduleName = path.replace(/.*\/(\w+?)\.\w+$/, '$1')
+  if (path.startsWith('./modules/index')) continue
+  const module = files[path]
+  module.default.forEach((v) => {
     v.path = `/${moduleName}${v.path}`
-    v.name = `${moduleName}-${v.name}`
-    if (v.alias) {
-      v.alias = `/${moduleName}${v.alias}`
+    if (v.name) {
+      v.name = `${moduleName}-${v.name}`
     }
   })
-  routes = routes.concat(routerModule.default || routerModule)
-})
+  routes = routes.concat(module.default || module)
+}
 
-if (process.env.NODE_ENV !== 'production') {
+if (import.meta.env.NODE_ENV !== 'production') {
   Vue.use(VueRouter)
 }
 
@@ -37,7 +34,9 @@ if (process.env.NODE_ENV !== 'production') {
 const createRouter = () => {
   return new VueRouter({
     mode: 'history',
-    base: window.__POWERED_BY_QIANKUN__ ? window.__QIANKUN_ROUTER_BASE : process.env.BASE_URL,
+    base: window.__POWERED_BY_QIANKUN__
+      ? window.__QIANKUN_ROUTER_BASE
+      : import.meta.env.BASE_URL,
     scrollBehavior: () => ({ x: 0, y: 0 }),
     routes
   })

+ 2 - 2
apps/jy-pc/src/store/index.js

@@ -2,7 +2,7 @@ import Vue from 'vue'
 import Vuex from 'vuex'
 import user from './user'
 
-if (process.env.NODE_ENV !== 'production') {
+if (import.meta.env.NODE_ENV !== 'production') {
   Vue.use(Vuex)
 }
 
@@ -11,7 +11,7 @@ export default new Vuex.Store({
   state: {},
   mutations: {},
   getters: {
-    inQK () {
+    inQK() {
       return window.__POWERED_BY_QIANKUN__ || false
     }
   },

+ 119 - 0
apps/jy-pc/vite.config.js

@@ -0,0 +1,119 @@
+import { resolve } from 'path'
+
+import { defineConfig, loadEnv } from 'vite'
+import legacy from '@vitejs/plugin-legacy'
+import vue2 from '@vitejs/plugin-vue2'
+import { ViteEjsPlugin } from 'vite-plugin-ejs'
+import { viteExternalsPlugin } from 'vite-plugin-externals'
+import { getProxyOfDomain } from './config/proxy'
+import { legacyQiankun } from 'vite-plugin-legacy-qiankun'
+import eslintPlugin from 'vite-plugin-eslint'
+
+const baseCDN = {
+  css: [],
+  js: ['https://cdn-common.jianyu360.com/cdn/lib/echarts/4.8.0/echarts.min.js']
+}
+
+const prodCDN = {
+  js: [
+    'https://cdn-common.jianyu360.com/cdn/lib/vue/2.7.16/vue.min.js',
+    'https://cdn-common.jianyu360.com/cdn/lib/vue-router/3.6.5/vue-router.min.js',
+    'https://cdn-common.jianyu360.com/cdn/lib/vuex/3.6.2/vuex.min.js',
+    'https://cdn-common.jianyu360.com/cdn/lib/axios/1.6.7/axios.min.js',
+    'https://cdn-common.jianyu360.com/cdn/lib/lodash/4.17.21/lodash.min.js',
+    'https://cdn-common.jianyu360.com/cdn/lib/moment/2.29.1/min/moment.min.js'
+  ]
+}
+
+function getCDN(isDev) {
+  if (isDev) {
+    return baseCDN
+  } else {
+    const allCDN = Object.assign({}, baseCDN)
+    allCDN.css = allCDN.css.concat(prodCDN.css || [])
+    allCDN.js = allCDN.js.concat(prodCDN.js || [])
+    return allCDN
+  }
+}
+
+function getExternals(isDev) {
+  if (isDev) {
+    return {}
+  }
+
+  return {
+    vue: 'Vue',
+    'vue-router': 'VueRouter',
+    vuex: 'Vuex',
+    axios: 'axios',
+    echarts: 'echarts',
+    lodash: '_',
+    // 解决画像visualMap不显示问题
+    // echarts: 'echarts',
+    // moment: 'moment',
+    jquery: '$',
+    moment: 'moment'
+  }
+}
+
+export default defineConfig(({ mode }) => {
+  const env = loadEnv(mode, process.cwd())
+  const isDev = mode === 'development'
+  return {
+    base: env.VITE_APP_BASE_PUBLIC,
+    build: {
+      outDir: '../../dist/page_jy_pc',
+      emptyOutDir: true
+    },
+    plugins: [
+      vue2(),
+      ViteEjsPlugin({
+        cdn: getCDN(isDev),
+        assets: {
+          version: Date.now()
+        }
+      }),
+      viteExternalsPlugin(getExternals(isDev)),
+      legacy({
+        targets: ['ie >= 11'],
+        additionalLegacyPolyfills: ['regenerator-runtime/runtime']
+      }),
+      legacyQiankun({
+        name: 'web-pc',
+        devSandbox: false
+      }),
+      eslintPlugin()
+    ],
+    resolve: {
+      alias: [
+        // {
+        //   find: /^~/,
+        //   replacement: "",
+        // },
+        {
+          find: '~@',
+          replacement: resolve(__dirname, 'src')
+        },
+        {
+          find: '@',
+          replacement: resolve(__dirname, 'src')
+        }
+      ],
+      extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
+    },
+    css: {
+      preprocessorOptions: {
+        scss: {
+          additionalData: `
+          @import "@/assets/style/_mixin.scss";
+          @import "@/assets/style/_variables.scss";
+        `
+        }
+      }
+    },
+    server: {
+      port: 8082,
+      proxy: getProxyOfDomain('https://www.jianyu360.cn')
+    }
+  }
+})

+ 12 - 10
apps/jy-pc/vue.config.js

@@ -3,7 +3,7 @@ const { cdn, externals, getProxyOfDomain, getProxyOfIp } = require('./config')
 const packageName = require('./package.json').name
 
 const plugins = []
-if (process.env.NODE_ENV === 'production') {
+if (import.meta.env.NODE_ENV === 'production') {
   plugins.push(
     new UglifyJsPlugin({
       uglifyOptions: {
@@ -24,7 +24,7 @@ module.exports = {
   parallel: false,
   productionSourceMap: false,
   outputDir: 'page_jy_pc',
-  publicPath: process.env.VUE_APP_BASE_URL,
+  publicPath: import.meta.env.VITE_APP_BASE_URL,
   assetsDir: '.',
   lintOnSave: true,
   configureWebpack: {
@@ -41,27 +41,29 @@ module.exports = {
     headers: {
       'Access-Control-Allow-Origin': '*'
     },
-    proxy: getProxyOfDomain('https://jybx-webtest.jydev.jianyu360.com') || getProxyOfIp('http://127.0.0.1')
+    proxy:
+      getProxyOfDomain('https://jybx-webtest.jydev.jianyu360.com') ||
+      getProxyOfIp('http://127.0.0.1')
   },
   css: {
     loaderOptions: {
       sass: {
-        additionalData: '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";'
+        additionalData:
+          '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";'
       }
     }
   },
-  chainWebpack: config => {
-    if (process.env.NODE_ENV === 'production') {
+  chainWebpack: (config) => {
+    if (import.meta.env.NODE_ENV === 'production') {
       // 生产环境配置
       config.externals(externals)
-      config.plugin('html').tap(args => {
+      config.plugin('html').tap((args) => {
         // html中添加cdn
         args[0].cdn = cdn
         return args
       })
 
-      config.optimization.minimize(true)
-        .minimizer('terser')
+      config.optimization.minimize(true).minimizer('terser')
     } else {
       config.devServer.set('inline', false)
       config.devServer.set('hot', true)
@@ -69,7 +71,7 @@ module.exports = {
     }
 
     // 分析静态资源
-    if (process.env.use_analyzer) {
+    if (import.meta.env.use_analyzer) {
       config
         .plugin('webpack-bundle-analyzer')
         .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)