zyp 1 день тому
батько
коміт
8a7b6887f1
4 змінених файлів з 49 додано та 20 видалено
  1. 1 0
      .nvmrc
  2. 2 0
      build/empty.js
  3. 9 11
      package.json
  4. 37 9
      vue.config.js

+ 1 - 0
.nvmrc

@@ -0,0 +1 @@
+16

+ 2 - 0
build/empty.js

@@ -0,0 +1,2 @@
+// Webpack 4 placeholder for Node.js built-in modules used by cloud SDKs in browser builds.
+module.exports = {}

+ 9 - 11
package.json

@@ -54,11 +54,13 @@
     "js-cookie": "2.2.1",
     "js-yaml": "^4.1.1",
     "jsencrypt": "3.0.0-rc.1",
-    "moment": "^2.30.1",
     "monaco-editor": "^0.55.1",
     "nprogress": "0.2.0",
-    "qrcode": "^1.5.4",
+    "fullcalendar": "3.10.2",
+    "qrcode": "1.5.4",
+    "qrcode.vue": "1.7.0",
     "qrcodejs2": "0.0.2",
+    "vue-full-calendar": "2.8.1-0",
     "quill": "1.3.7",
     "screenfull": "5.0.2",
     "sortablejs": "1.10.2",
@@ -68,7 +70,6 @@
     "vue-baidu-map": "^0.21.22",
     "vue-count-to": "1.0.13",
     "vue-cropper": "0.5.5",
-    "vue-full-calendar": "^2.8.1-0",
     "vue-jsonp": "^2.0.0",
     "vue-meta": "^2.4.0",
     "vue-mobile-calendar": "^3.3.0",
@@ -79,8 +80,8 @@
     "wangeditor": "^4.7.5"
   },
   "devDependencies": {
-    "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
-    "@babel/plugin-proposal-optional-chaining": "^7.21.0",
+    "@babel/plugin-proposal-nullish-coalescing-operator": "7.18.6",
+    "@babel/plugin-proposal-optional-chaining": "7.21.0",
     "@vue/cli-plugin-babel": "4.4.6",
     "@vue/cli-plugin-eslint": "4.4.6",
     "@vue/cli-service": "4.4.6",
@@ -89,16 +90,13 @@
     "connect": "3.6.6",
     "eslint": "7.15.0",
     "eslint-plugin-vue": "7.2.0",
-    "fullcalendar": "^3.10.5",
-    "html-webpack-plugin": "^5.6.7",
     "lint-staged": "10.5.3",
-    "qrcode.vue": "^1.7.0",
+    "sass": "1.32.13",
     "runjs": "4.4.2",
-    "sass": "^1.77.0",
     "sass-loader": "8.0.2",
+    "stylus": "0.54.8",
+    "stylus-loader": "3.0.2",
     "script-ext-html-webpack-plugin": "2.1.5",
-    "stylus": "^0.54.7",
-    "stylus-loader": "^3.0.2",
     "svg-sprite-loader": "5.1.1",
     "vue-template-compiler": "2.6.12",
     "webpack": "^4.46.0",

+ 37 - 9
vue.config.js

@@ -1,5 +1,6 @@
 'use strict'
 const path = require('path')
+const webpack = require('webpack')
 
 function resolve(dir) {
   return path.join(__dirname, dir)
@@ -22,16 +23,10 @@ module.exports = {
   // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
   assetsDir: 'static',
   // 是否开启eslint保存检测,有效值:ture | false | 'error'
-  lintOnSave: process.env.NODE_ENV === 'development',
+  // 关闭保存时 ESLint 阻塞编译(旧版 babel-eslint 无法解析 ?. 等新语法)
+  lintOnSave: false,
   // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
   productionSourceMap: false,
-  // transpileDependencies: true, // 默认情况下 babel-loader 忽略 node_modules 中的所有文件,启用此选项需配置transpileDependencies
-  transpileDependencies: [
-    /@aws-sdk/,
-    /@smithy/,
-    /@huaweicloud/,
-    /vod-js-sdk-v6/
-  ],
   // webpack-dev-server 相关配置
   devServer: {
     host: '0.0.0.0',
@@ -151,15 +146,48 @@ module.exports = {
       }
     }
   },
+  transpileDependencies: [
+    '@huaweicloud/huaweicloud-sdk-core',
+    '@huaweicloud/huaweicloud-sdk-vod',
+    'vod-js-sdk-v6',
+    /@aws-sdk/,
+    /@smithy/,
+    /@aws/
+  ],
   configureWebpack: {
     name: name,
+    node: {
+      fs: 'empty',
+      net: 'empty',
+      tls: 'empty'
+    },
     resolve: {
       alias: {
-        '@': resolve('src')
+        '@': resolve('src'),
+        'node:fs': resolve('build/empty.js'),
+        'node:fs/promises': resolve('build/empty.js'),
+        'node:path': resolve('build/empty.js'),
+        'node:os': resolve('build/empty.js'),
+        'node:crypto': resolve('build/empty.js'),
+        'node:http': resolve('build/empty.js'),
+        'node:https': resolve('build/empty.js'),
+        'node:stream': resolve('build/empty.js'),
+        'node:process': resolve('build/empty.js'),
+        'node:url': resolve('build/empty.js'),
+        'node:util': resolve('build/empty.js'),
+        'node:buffer': resolve('build/empty.js'),
+        'node:events': resolve('build/empty.js')
       }
     }
   },
   chainWebpack(config) {
+    // Webpack 4 无法解析 node: 协议的内置模块,统一替换为空模块
+    config.plugin('replace-node-protocol')
+      .use(webpack.NormalModuleReplacementPlugin, [
+        /^node:.+$/,
+        resolve('build/empty.js')
+      ])
+
     config.plugins.delete('preload') // TODO: need test
     config.plugins.delete('prefetch') // TODO: need test