From 5661031005913d1cfaded31c784e1f218009c59d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E9=A3=8E?= <18012261618@126.com> Date: Fri, 27 Mar 2026 13:52:05 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0broswer-vendors?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=92=8C=E7=9B=B8=E5=85=B3=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vue3/build/broswer-vendors.js | 64 +++++++++++++++++++ packages/vue3/build/rspack.config.js | 3 +- .../vue3/source/src/hooks/datasource-utils.js | 4 +- packages/vue3/src/broswer-vendors.ts | 13 ++++ 4 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 packages/vue3/build/broswer-vendors.js create mode 100644 packages/vue3/src/broswer-vendors.ts diff --git a/packages/vue3/build/broswer-vendors.js b/packages/vue3/build/broswer-vendors.js new file mode 100644 index 00000000..7ab992fc --- /dev/null +++ b/packages/vue3/build/broswer-vendors.js @@ -0,0 +1,64 @@ +const path = require('path'); +const { defineConfig } = require('@rspack/cli'); + +const root = path.resolve(__dirname, '..'); + +const targets = ['last 2 versions', '> 0.2%', 'not dead', 'Firefox ESR']; + +exports.vendorConfig = (type) => + defineConfig({ + mode: 'production', + devtool: 'source-map', + entry: { + index: [path.resolve(__dirname, '../src/broswer-vendors.ts')], + }, + target: 'web', + output: { + publicPath: '/', + path: path.resolve(root, `dist/${type}`), + filename: `broswer-vendors.js`, + library: { + name: 'LcapBrowserVendors', + type: 'umd', + umdNamedDefine: true, + export: 'default', + }, + }, + module: { + rules: [ + { + test: /\.[mc]?js$/, + type: 'javascript/auto', + use: [ + { + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'ecmascript', + }, + }, + }, + }, + ], + }, + { + test: /\.ts$/, + use: [ + { + loader: 'builtin:swc-loader', + options: { + jsc: { + parser: { + syntax: 'typescript', + }, + }, + env: { targets }, + }, + }, + ], + }, + ], + }, + stats: 'minimal', + }); diff --git a/packages/vue3/build/rspack.config.js b/packages/vue3/build/rspack.config.js index 46fbad89..8c809099 100644 --- a/packages/vue3/build/rspack.config.js +++ b/packages/vue3/build/rspack.config.js @@ -2,6 +2,7 @@ const path = require('path'); const { defineConfig } = require('@rspack/cli'); const rspack = require('@rspack/core'); const { VueLoaderPlugin } = require('vue-loader'); +const { vendorConfig } = require('./broswer-vendors'); const root = path.resolve(__dirname, '..'); const library = 'cloudAdminDesigner'; @@ -116,4 +117,4 @@ const baseConfig = (type) => stats: 'minimal', }); -module.exports = [baseConfig('pc'), baseConfig('mobile')]; +module.exports = [baseConfig('pc'), baseConfig('mobile'), vendorConfig('pc'), vendorConfig('mobile')]; diff --git a/packages/vue3/source/src/hooks/datasource-utils.js b/packages/vue3/source/src/hooks/datasource-utils.js index deef334b..50cb5009 100644 --- a/packages/vue3/source/src/hooks/datasource-utils.js +++ b/packages/vue3/source/src/hooks/datasource-utils.js @@ -1,4 +1,4 @@ -import _isEqual from 'lodash/isEqual'; +import { isEqual } from 'lodash'; export function useDataSourceUtils() { const cache = new Map(); @@ -12,7 +12,7 @@ export function useDataSourceUtils() { // null 直接比较 if (a === null || b === null) return a === b; if (typeof a === 'object') { - return _isEqual(a, b); + return isEqual(a, b); } return Object.is(a, b); }); diff --git a/packages/vue3/src/broswer-vendors.ts b/packages/vue3/src/broswer-vendors.ts new file mode 100644 index 00000000..d4c14301 --- /dev/null +++ b/packages/vue3/src/broswer-vendors.ts @@ -0,0 +1,13 @@ +import * as Vue from 'vue'; +import * as VueRouter from 'vue-router'; +import * as Pinia from 'pinia'; +import * as VueI18n from 'vue-i18n'; +import * as VueCompilerSFC from 'vue/compiler-sfc'; +import lodash from 'lodash'; + +window.Vue = Vue; +window.VueRouter = VueRouter; +window.Pinia = Pinia; +window.VueI18n = VueI18n; +window.VueCompilerSFC = VueCompilerSFC; +window.Lodash = lodash; From 9a746bf9b0c6c157b89d540e3c4f5bdcb38544c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E9=A3=8E?= <18012261618@126.com> Date: Fri, 27 Mar 2026 16:56:57 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0broswer-vendors.t?= =?UTF-8?q?s=E4=BB=A5=E5=A3=B0=E6=98=8E=E5=85=A8=E5=B1=80=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vue3/build/broswer-vendors.js | 1 - packages/vue3/src/broswer-vendors.ts | 11 +++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/vue3/build/broswer-vendors.js b/packages/vue3/build/broswer-vendors.js index 7ab992fc..b04bd14c 100644 --- a/packages/vue3/build/broswer-vendors.js +++ b/packages/vue3/build/broswer-vendors.js @@ -21,7 +21,6 @@ exports.vendorConfig = (type) => name: 'LcapBrowserVendors', type: 'umd', umdNamedDefine: true, - export: 'default', }, }, module: { diff --git a/packages/vue3/src/broswer-vendors.ts b/packages/vue3/src/broswer-vendors.ts index d4c14301..0249b0dc 100644 --- a/packages/vue3/src/broswer-vendors.ts +++ b/packages/vue3/src/broswer-vendors.ts @@ -5,6 +5,17 @@ import * as VueI18n from 'vue-i18n'; import * as VueCompilerSFC from 'vue/compiler-sfc'; import lodash from 'lodash'; +declare global { + interface Window { + Vue: typeof Vue; + VueRouter: typeof VueRouter; + Pinia: typeof Pinia; + VueI18n: typeof VueI18n; + VueCompilerSFC: typeof VueCompilerSFC; + Lodash: typeof lodash; + } +} + window.Vue = Vue; window.VueRouter = VueRouter; window.Pinia = Pinia;