diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index d32687098f..1d4ff7c763 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -196,6 +196,8 @@ importers: ../../packages/vchart: specifiers: + '@esbuild-plugins/node-globals-polyfill': 0.1.1 + '@esbuild-plugins/node-modules-polyfill': 0.1.4 '@internal/bundler': workspace:* '@internal/eslint-config': workspace:* '@internal/ts-config': workspace:* @@ -231,6 +233,7 @@ importers: node-fetch: 2.6.7 prettier: 2.6.1 react-device-detect: ^2.2.2 + rollup-plugin-node-polyfills: 0.2.1 ts-jest: ^26.0.0 ts-loader: 8.0.2 ts-node: 10.9.0 @@ -252,6 +255,8 @@ importers: '@visactor/vscale': 0.13.3 '@visactor/vutils': 0.13.3 devDependencies: + '@esbuild-plugins/node-globals-polyfill': 0.1.1 + '@esbuild-plugins/node-modules-polyfill': 0.1.4 '@internal/bundler': link:../../tools/bundler '@internal/eslint-config': link:../../share/eslint-config '@internal/ts-config': link:../../share/ts-config @@ -275,6 +280,7 @@ importers: node-fetch: 2.6.7 prettier: 2.6.1 react-device-detect: 2.2.3 + rollup-plugin-node-polyfills: 0.2.1 ts-jest: 26.5.6_xuote2qreek47x2di7kesslrai ts-loader: 8.0.2_typescript@4.9.5 ts-node: 10.9.0_3v26fpmfgn2ciwm7ypihuhruum @@ -1896,6 +1902,21 @@ packages: - supports-color dev: true + /@esbuild-plugins/node-globals-polyfill/0.1.1: + resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==} + peerDependencies: + esbuild: '*' + dev: true + + /@esbuild-plugins/node-modules-polyfill/0.1.4: + resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==} + peerDependencies: + esbuild: '*' + dependencies: + escape-string-regexp: 4.0.0 + rollup-plugin-node-polyfills: 0.2.1 + dev: true + /@esbuild/android-arm/0.15.18: resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} @@ -9031,6 +9052,10 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + /estree-walker/0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -17110,6 +17135,21 @@ packages: rollup: 3.20.5 dev: true + /rollup-plugin-inject/3.0.2: + resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. + dependencies: + estree-walker: 0.6.1 + magic-string: 0.25.9 + rollup-pluginutils: 2.8.2 + dev: true + + /rollup-plugin-node-polyfills/0.2.1: + resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} + dependencies: + rollup-plugin-inject: 3.0.2 + dev: true + /rollup-plugin-terser/7.0.2_rollup@3.20.5: resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser @@ -17123,6 +17163,12 @@ packages: terser: 5.17.1 dev: true + /rollup-pluginutils/2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + dev: true + /rollup/2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} diff --git a/packages/vchart/__tests__/runtime/browser/vite.config.js b/packages/vchart/__tests__/runtime/browser/vite.config.js index fec91f8f34..42cff1dbbf 100644 --- a/packages/vchart/__tests__/runtime/browser/vite.config.js +++ b/packages/vchart/__tests__/runtime/browser/vite.config.js @@ -1,6 +1,18 @@ import localConf from './vite.config.local'; +import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill'; +import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill'; +import rollupNodePolyFill from 'rollup-plugin-node-polyfills'; export default { + server: { + host: '0.0.0.0', + port: localConf.port || 3000, + https: !!process.env.HTTPS + }, + define: { + __DEV__: true, + __VERSION__: JSON.stringify(require('../../../package.json').version) + }, optimizeDeps: { exclude: [ '@visactor/vrender', @@ -10,17 +22,31 @@ export default { '@visactor/vgrammar-label', '@visactor/vgrammar-wordcloud', '@visactor/vgrammar-wordcloud-fast', - '@visactor/vscale', - ] + '@visactor/vscale' + ], + esbuildOptions: { + // Node.js global to browser globalThis + define: { + global: 'globalThis' + }, + // Enable esbuild polyfill plugins + plugins: [ + NodeGlobalsPolyfillPlugin({ + process: true, + buffer: true + }), + NodeModulesPolyfillPlugin() + ] + } }, - server: { - host: '0.0.0.0', - port: localConf.port || 3000, - https: !!process.env.HTTPS - }, - define: { - __DEV__: true, - __VERSION__: JSON.stringify(require('../../../package.json').version) + build: { + rollupOptions: { + plugins: [ + // Enable rollup polyfills plugin + // used during production bundling + rollupNodePolyFill() + ] + } }, resolve: localConf.resolve || {} }; diff --git a/packages/vchart/package.json b/packages/vchart/package.json index f45861ebe9..4e1ae28385 100644 --- a/packages/vchart/package.json +++ b/packages/vchart/package.json @@ -96,6 +96,9 @@ "d3-hexbin": "^0.2.2", "d3-hierarchy": "^3.1.1", "vite": "3.2.6", + "@esbuild-plugins/node-globals-polyfill": "0.1.1", + "@esbuild-plugins/node-modules-polyfill": "0.1.4", + "rollup-plugin-node-polyfills": "0.2.1", "node-fetch": "2.6.7", "form-data": "~4.0.0", "canvas": "2.11.2"