From dac27dd3c6cb5f4cd081322d417c9685921aa4b3 Mon Sep 17 00:00:00 2001
From: bqxbqx <132878537+BQXBQX@users.noreply.github.com>
Date: Thu, 23 Jan 2025 20:49:10 +0800
Subject: [PATCH] feat: use @antv/vendor to replace d3 package (#6594)

* chore: use vendor as d3 lib

* chore: upgrade vendor to 1.0.3

* fix: d3-hierarchy Node not found

* chore: use vendor replace __test__ d3 pkg

* fix: jest config & lock vendor version

* chore: add ignore & missing in vendor replace

* chore: remove vendor dev dependencies
---
 .../plots/animation/aapl-area-keyframe.ts     |  7 ++--
 .../animation/polio-point-stack-enter.ts      |  2 +-
 __tests__/plots/animation/stocks-keyframe.ts  |  4 +-
 .../interaction/gdp2-point-chart-fisheye.ts   |  4 +-
 .../interaction/indices-line-brush-series.ts  |  4 +-
 .../indices-line-chart-facet-brush-shared.ts  |  4 +-
 .../interaction/indices-line-chart-facet.ts   |  4 +-
 .../indices-line-chart-index-series.ts        |  4 +-
 .../interaction/indices-line-crosshairs-xy.ts |  4 +-
 .../points-point-regression-quad-inset.ts     |  3 +-
 .../points-point-regression-quad-transpose.ts |  3 +-
 .../points-point-regression-quad.ts           |  3 +-
 .../points-point-tooltip-marker.ts            |  3 +-
 .../interaction/unemployment-choropleth.ts    |  4 +-
 .../plots/static/airports-point-choropleth.ts |  4 +-
 __tests__/plots/static/barley-line-trail.ts   |  6 +--
 .../barley-point-facet-rect-col-z-index.ts    |  6 +--
 .../static/barley-point-facet-rect-col.ts     |  6 +--
 __tests__/plots/static/cars2-point-jitterX.ts |  2 +-
 __tests__/plots/static/cars2-point-jitterY.ts |  2 +-
 .../countries-50m-projection-comparison.ts    |  6 ++-
 .../static/diamond-point-jitter-polar.ts      |  2 +-
 .../static/energy-sankey-custom-tooltip.ts    |  4 +-
 .../plots/static/energy-sankey-custom.ts      |  8 ++--
 .../plots/static/energy-sankey-defaults.ts    |  4 +-
 .../energy-sankey-view-custom-tooltip.ts      |  4 +-
 __tests__/plots/static/english-wordCloud.ts   |  2 +-
 ...e-point-circle-pack-custom-auto-padding.ts |  2 +-
 .../static/flare-point-circle-pack-custom.ts  |  2 +-
 .../plots/static/flare-treemap-custom.ts      |  2 +-
 .../plots/static/hale-choropleth-world.ts     |  6 +--
 ...ome-statement-by-region-interval-custom.ts |  2 +-
 .../static/indices-line-chart-facet-axis.ts   |  4 +-
 .../static/indices-line-point-scale-key.ts    |  4 +-
 .../plots/static/miserable-force-custom.ts    |  2 +-
 .../static/month-interval-facet-circle.ts     |  2 +-
 .../plots/static/month-interval-facet-rect.ts |  2 +-
 .../month-interval-radial-facet-rect.ts       |  2 +-
 .../static/philosophy-wordCloud-custom.ts     |  2 +-
 .../static/philosophy-wordCloud-default.ts    |  2 +-
 .../static/philosophy-wordCloud-image.ts      |  2 +-
 .../plots/static/premier-league-table.ts      |  2 +-
 .../static/temperature2-line-threshold.ts     |  6 +--
 ...ine-multi-axes-auto-padding-tick-method.ts |  6 +--
 .../plots/static/train-line-multi-axes.ts     | 11 ++++--
 .../plots/static/unemployment-choropleth.ts   |  4 +-
 .../plots/tooltip/energy-sankey-custom.ts     |  8 ++--
 .../tooltip/flare-point-circle-pack-custom.ts |  2 +-
 .../plots/tooltip/flare-treemap-default.ts    |  2 +-
 .../tooltip/flare-treemap-poptip-custom.ts    |  2 +-
 .../plots/tooltip/flare-treemap-poptip.ts     |  2 +-
 .../plots/tooltip/indices-line-chart-facet.ts |  4 +-
 .../plots/tooltip/indices-line-custom.ts      |  4 +-
 .../plots/tooltip/indices-line-formatter.ts   |  4 +-
 __tests__/plots/tooltip/indices-line-items.ts |  4 +-
 .../tooltip/indices-line-point-reverse.ts     | 10 +++--
 .../plots/tooltip/indices-line-reverse.ts     |  4 +-
 .../plots/tooltip/indices-line-series.ts      |  4 +-
 __tests__/plots/tooltip/indices-line.ts       |  4 +-
 .../plots/tooltip/miserable-force-custom.ts   |  2 +-
 .../tooltip/points-point-regression-quad.ts   |  3 +-
 .../tooltip/temperature2-line-threshold.ts    |  6 +--
 .../plots/tooltip/unemployment-choropleth.ts  |  4 +-
 jest.config.js                                |  4 +-
 package.json                                  | 22 +----------
 src/animation/scaleInY.ts                     |  2 +-
 src/animation/waveIn.ts                       |  2 +-
 src/component/axis.ts                         |  4 +-
 src/component/legendCategory.ts               |  2 +-
 src/component/legendContinuous.ts             |  2 +-
 src/component/slider.ts                       |  2 +-
 src/composition/d3Projection.ts               |  2 +-
 src/composition/facetRect.ts                  |  2 +-
 src/composition/geoView.ts                    |  2 +-
 src/data/cluster.ts                           |  2 +-
 src/data/fetch.ts                             |  2 +-
 src/data/join.ts                              |  2 +-
 src/data/kde.ts                               |  2 +-
 src/data/tree.ts                              |  2 +-
 src/data/utils/arc/arc.ts                     |  2 +-
 src/data/utils/d3-sankey/align.ts             |  2 +-
 src/data/utils/d3-sankey/sankey.ts            |  2 +-
 src/data/wordCloud.ts                         |  2 +-
 src/interaction/chartIndex.ts                 |  2 +-
 src/interaction/elementHighlight.ts           |  2 +-
 src/interaction/elementSelect.ts              |  2 +-
 src/interaction/legendHighlight.ts            |  2 +-
 src/interaction/tooltip.ts                    |  2 +-
 src/interaction/treemapDrillDown.ts           |  5 +--
 src/interaction/utils.ts                      |  4 +-
 src/label-transform/contrastReverse.ts        |  2 +-
 src/label-transform/overlapDodgeY.ts          |  2 +-
 src/mark/area.ts                              |  2 +-
 src/mark/boxplot.ts                           |  7 +++-
 src/mark/forceGraph.ts                        |  2 +-
 src/mark/line.ts                              |  2 +-
 src/mark/pack.ts                              |  6 ++-
 src/mark/utils.ts                             |  2 +-
 src/runtime/component.ts                      |  4 +-
 src/runtime/layout.ts                         |  2 +-
 src/runtime/mark.ts                           |  2 +-
 src/runtime/plot.ts                           |  4 +-
 src/runtime/scale.ts                          |  4 +-
 src/runtime/transform.ts                      |  4 +-
 src/runtime/types/mark.ts                     |  2 +-
 src/shape/area/area.ts                        |  2 +-
 src/shape/area/curve.ts                       |  2 +-
 src/shape/area/hv.ts                          |  2 +-
 src/shape/area/hvh.ts                         |  2 +-
 src/shape/area/smooth.ts                      |  2 +-
 src/shape/area/vh.ts                          |  2 +-
 src/shape/box/box.ts                          |  2 +-
 src/shape/box/violin.ts                       |  2 +-
 src/shape/connector/connector.ts              |  2 +-
 src/shape/density/density.ts                  |  2 +-
 src/shape/heatmap/heatmap.ts                  |  2 +-
 src/shape/interval/color.ts                   |  2 +-
 src/shape/interval/funnel.ts                  |  2 +-
 src/shape/label/position/area.ts              |  2 +-
 src/shape/label/position/utils.ts             |  2 +-
 src/shape/line/curve.ts                       |  7 +++-
 src/shape/line/hv.ts                          |  2 +-
 src/shape/line/hvh.ts                         |  2 +-
 src/shape/line/line.ts                        |  2 +-
 src/shape/line/smooth.ts                      |  2 +-
 src/shape/line/trail.ts                       |  2 +-
 src/shape/line/vh.ts                          |  2 +-
 src/shape/lineXY/line.ts                      |  2 +-
 src/shape/link/arc.ts                         |  2 +-
 src/shape/link/smooth.ts                      |  2 +-
 src/shape/link/vhv.ts                         |  2 +-
 src/shape/polygon/polygon.ts                  |  2 +-
 src/shape/polygon/ribbon.ts                   |  2 +-
 src/shape/text/advance.ts                     |  2 +-
 src/shape/utils.ts                            |  4 +-
 src/shape/vector/vector.ts                    |  2 +-
 src/transform/bin.ts                          |  7 +++-
 src/transform/flexX.ts                        |  2 +-
 src/transform/groupN.ts                       |  2 +-
 src/transform/normalizeY.ts                   |  2 +-
 src/transform/sample.ts                       |  2 +-
 src/transform/select.ts                       |  2 +-
 src/transform/sort.ts                         |  2 +-
 src/transform/stackEnter.ts                   |  2 +-
 src/transform/symmetryY.ts                    |  2 +-
 src/transform/utils/order.ts                  |  2 +-
 src/utils/scale.ts                            |  2 +-
 src/utils/selection.ts                        |  2 +-
 src/utils/treeDataTransform.ts                | 39 ++++++++++++-------
 149 files changed, 271 insertions(+), 239 deletions(-)

diff --git a/__tests__/plots/animation/aapl-area-keyframe.ts b/__tests__/plots/animation/aapl-area-keyframe.ts
index cab21f023e..5ccd3686f0 100644
--- a/__tests__/plots/animation/aapl-area-keyframe.ts
+++ b/__tests__/plots/animation/aapl-area-keyframe.ts
@@ -1,9 +1,9 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function aaplAreaKeyframe(): Promise<G2Spec> {
-  const data = await csv('data/aapl.csv', autoType);
+  const data = await csv<any>('data/aapl.csv', autoType);
   const missing = data.map((d) => ({
     ...d,
     close: d.date.getUTCMonth() <= 3 ? NaN : d.close,
@@ -24,6 +24,7 @@ export async function aaplAreaKeyframe(): Promise<G2Spec> {
       connectFillOpacity: 0.15,
     },
   };
+  // @ts-ignore
   return {
     type: 'timingKeyframe',
     width: 800,
diff --git a/__tests__/plots/animation/polio-point-stack-enter.ts b/__tests__/plots/animation/polio-point-stack-enter.ts
index 90923506c6..408c172311 100644
--- a/__tests__/plots/animation/polio-point-stack-enter.ts
+++ b/__tests__/plots/animation/polio-point-stack-enter.ts
@@ -1,4 +1,4 @@
-import { interpolateHcl } from 'd3-interpolate';
+import { interpolateHcl } from '@antv/vendor/d3-interpolate';
 import { G2Spec } from '../../../src';
 
 /**
diff --git a/__tests__/plots/animation/stocks-keyframe.ts b/__tests__/plots/animation/stocks-keyframe.ts
index ca6ba306ac..4e8a9f3ebb 100644
--- a/__tests__/plots/animation/stocks-keyframe.ts
+++ b/__tests__/plots/animation/stocks-keyframe.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 const facetLine = (data) => ({
diff --git a/__tests__/plots/interaction/gdp2-point-chart-fisheye.ts b/__tests__/plots/interaction/gdp2-point-chart-fisheye.ts
index f1b537c266..9c7f014255 100644
--- a/__tests__/plots/interaction/gdp2-point-chart-fisheye.ts
+++ b/__tests__/plots/interaction/gdp2-point-chart-fisheye.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { step } from './utils';
 
diff --git a/__tests__/plots/interaction/indices-line-brush-series.ts b/__tests__/plots/interaction/indices-line-brush-series.ts
index b0027d588d..5cfb8cb54c 100644
--- a/__tests__/plots/interaction/indices-line-brush-series.ts
+++ b/__tests__/plots/interaction/indices-line-brush-series.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { brush } from './penguins-point-brush';
 
diff --git a/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts b/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts
index a7fbe6600b..13c56d50c2 100644
--- a/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts
+++ b/__tests__/plots/interaction/indices-line-chart-facet-brush-shared.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { brush } from './penguins-point-brush';
 
diff --git a/__tests__/plots/interaction/indices-line-chart-facet.ts b/__tests__/plots/interaction/indices-line-chart-facet.ts
index e28591c2db..8fdb03ca7b 100644
--- a/__tests__/plots/interaction/indices-line-chart-facet.ts
+++ b/__tests__/plots/interaction/indices-line-chart-facet.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { step } from './utils';
 
diff --git a/__tests__/plots/interaction/indices-line-chart-index-series.ts b/__tests__/plots/interaction/indices-line-chart-index-series.ts
index 2ef5936133..89bb6cab4e 100644
--- a/__tests__/plots/interaction/indices-line-chart-index-series.ts
+++ b/__tests__/plots/interaction/indices-line-chart-index-series.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, ELEMENT_CLASS_NAME } from '../../../src';
 import { step } from './utils';
 
diff --git a/__tests__/plots/interaction/indices-line-crosshairs-xy.ts b/__tests__/plots/interaction/indices-line-crosshairs-xy.ts
index 9ecb12f84e..3a0e9e140a 100644
--- a/__tests__/plots/interaction/indices-line-crosshairs-xy.ts
+++ b/__tests__/plots/interaction/indices-line-crosshairs-xy.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { step } from './utils';
 
diff --git a/__tests__/plots/interaction/points-point-regression-quad-inset.ts b/__tests__/plots/interaction/points-point-regression-quad-inset.ts
index d6a9c4466d..5d7e2ddd5c 100644
--- a/__tests__/plots/interaction/points-point-regression-quad-inset.ts
+++ b/__tests__/plots/interaction/points-point-regression-quad-inset.ts
@@ -1,4 +1,5 @@
-import { regressionQuad } from 'd3-regression';
+// @ts-ignore
+import { regressionQuad } from '@antv/vendor/d3-regression';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { points } from '../../data/points';
 import { step } from './utils';
diff --git a/__tests__/plots/interaction/points-point-regression-quad-transpose.ts b/__tests__/plots/interaction/points-point-regression-quad-transpose.ts
index 407ca0919f..e679a2d0d2 100644
--- a/__tests__/plots/interaction/points-point-regression-quad-transpose.ts
+++ b/__tests__/plots/interaction/points-point-regression-quad-transpose.ts
@@ -1,4 +1,5 @@
-import { regressionQuad } from 'd3-regression';
+// @ts-ignore
+import { regressionQuad } from '@antv/vendor/d3-regression';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { points } from '../../data/points';
 import { step } from './utils';
diff --git a/__tests__/plots/interaction/points-point-regression-quad.ts b/__tests__/plots/interaction/points-point-regression-quad.ts
index e313162e5a..ac581aadf9 100644
--- a/__tests__/plots/interaction/points-point-regression-quad.ts
+++ b/__tests__/plots/interaction/points-point-regression-quad.ts
@@ -1,4 +1,5 @@
-import { regressionQuad } from 'd3-regression';
+// @ts-ignore
+import { regressionQuad } from '@antv/vendor/d3-regression';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { points } from '../../data/points';
 import { step } from './utils';
diff --git a/__tests__/plots/interaction/points-point-tooltip-marker.ts b/__tests__/plots/interaction/points-point-tooltip-marker.ts
index f875b3fc9c..abb586488c 100644
--- a/__tests__/plots/interaction/points-point-tooltip-marker.ts
+++ b/__tests__/plots/interaction/points-point-tooltip-marker.ts
@@ -1,4 +1,5 @@
-import { regressionQuad } from 'd3-regression';
+// @ts-ignore
+import { regressionQuad } from '@antv/vendor/d3-regression';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 import { points } from '../../data/points';
 import { step } from './utils';
diff --git a/__tests__/plots/interaction/unemployment-choropleth.ts b/__tests__/plots/interaction/unemployment-choropleth.ts
index 32a34d6614..f0d6849292 100644
--- a/__tests__/plots/interaction/unemployment-choropleth.ts
+++ b/__tests__/plots/interaction/unemployment-choropleth.ts
@@ -1,6 +1,6 @@
-import { tsv } from 'd3-fetch';
+import { tsv } from '@antv/vendor/d3-fetch';
 import { feature } from 'topojson';
-import { autoType } from 'd3-dsv';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec, ELEMENT_CLASS_NAME } from '../../../src';
 import { step } from './utils';
 
diff --git a/__tests__/plots/static/airports-point-choropleth.ts b/__tests__/plots/static/airports-point-choropleth.ts
index 4a0aa74586..e084051e76 100644
--- a/__tests__/plots/static/airports-point-choropleth.ts
+++ b/__tests__/plots/static/airports-point-choropleth.ts
@@ -1,6 +1,6 @@
-import { csv } from 'd3-fetch';
+import { csv } from '@antv/vendor/d3-fetch';
 import { feature } from 'topojson';
-import { autoType } from 'd3-dsv';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function airportsPointChoropleth(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/barley-line-trail.ts b/__tests__/plots/static/barley-line-trail.ts
index eccb3c687d..78fcc28edd 100644
--- a/__tests__/plots/static/barley-line-trail.ts
+++ b/__tests__/plots/static/barley-line-trail.ts
@@ -1,6 +1,6 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { rollup } from 'd3-array';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { rollup } from '@antv/vendor/d3-array';
 import { G2Spec } from '../../../src';
 
 export async function barleyLineTrail(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/barley-point-facet-rect-col-z-index.ts b/__tests__/plots/static/barley-point-facet-rect-col-z-index.ts
index 19ff6b96ac..c2b501e8ec 100644
--- a/__tests__/plots/static/barley-point-facet-rect-col-z-index.ts
+++ b/__tests__/plots/static/barley-point-facet-rect-col-z-index.ts
@@ -1,6 +1,6 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { groupSort, median } from 'd3-array';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { groupSort, median } from '@antv/vendor/d3-array';
 import { G2Spec } from '../../../src';
 
 export async function barleyPointFacetRectColZIndex(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/barley-point-facet-rect-col.ts b/__tests__/plots/static/barley-point-facet-rect-col.ts
index 3330255821..8a20a1a444 100644
--- a/__tests__/plots/static/barley-point-facet-rect-col.ts
+++ b/__tests__/plots/static/barley-point-facet-rect-col.ts
@@ -1,6 +1,6 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { groupSort, median } from 'd3-array';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { groupSort, median } from '@antv/vendor/d3-array';
 import { G2Spec } from '../../../src';
 
 export async function barleyPointFacetRectCol(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/cars2-point-jitterX.ts b/__tests__/plots/static/cars2-point-jitterX.ts
index 4f5f871ef5..2c02d9da66 100644
--- a/__tests__/plots/static/cars2-point-jitterX.ts
+++ b/__tests__/plots/static/cars2-point-jitterX.ts
@@ -1,4 +1,4 @@
-import * as d3 from 'd3-random';
+import * as d3 from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function cars2PointJitterX(): G2Spec {
diff --git a/__tests__/plots/static/cars2-point-jitterY.ts b/__tests__/plots/static/cars2-point-jitterY.ts
index c38666c8ce..9e5b9e7617 100644
--- a/__tests__/plots/static/cars2-point-jitterY.ts
+++ b/__tests__/plots/static/cars2-point-jitterY.ts
@@ -1,4 +1,4 @@
-import * as d3 from 'd3-random';
+import * as d3 from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function cars2PointJitterY(): G2Spec {
diff --git a/__tests__/plots/static/countries-50m-projection-comparison.ts b/__tests__/plots/static/countries-50m-projection-comparison.ts
index fb0195d8fc..4f60a4eece 100644
--- a/__tests__/plots/static/countries-50m-projection-comparison.ts
+++ b/__tests__/plots/static/countries-50m-projection-comparison.ts
@@ -1,5 +1,9 @@
 import { feature } from 'topojson';
-import { geoPolyconic, geoRectangularPolyconic } from 'd3-geo-projection';
+import {
+  geoPolyconic,
+  geoRectangularPolyconic,
+  // @ts-ignore
+} from '@antv/vendor/d3-geo-projection';
 import { G2Spec } from '../../../src';
 
 export async function countries50mProjectionComparison(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/diamond-point-jitter-polar.ts b/__tests__/plots/static/diamond-point-jitter-polar.ts
index e1f199360b..e7da5bb7c7 100644
--- a/__tests__/plots/static/diamond-point-jitter-polar.ts
+++ b/__tests__/plots/static/diamond-point-jitter-polar.ts
@@ -1,4 +1,4 @@
-import * as d3 from 'd3-random';
+import * as d3 from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function diamondPointJitterPolar(): G2Spec {
diff --git a/__tests__/plots/static/energy-sankey-custom-tooltip.ts b/__tests__/plots/static/energy-sankey-custom-tooltip.ts
index 5a259a7d9b..64143ab2d6 100644
--- a/__tests__/plots/static/energy-sankey-custom-tooltip.ts
+++ b/__tests__/plots/static/energy-sankey-custom-tooltip.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function energySankeyCustomTooltip(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/energy-sankey-custom.ts b/__tests__/plots/static/energy-sankey-custom.ts
index 90c6b5b94b..c04fcc95d9 100644
--- a/__tests__/plots/static/energy-sankey-custom.ts
+++ b/__tests__/plots/static/energy-sankey-custom.ts
@@ -1,10 +1,10 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { G2Spec } from '../../../src';
 
 export async function energySankeyCustom(): Promise<G2Spec> {
-  const links = await csv('data/energy.csv', autoType);
+  const links = await csv<any>('data/energy.csv', autoType);
 
   const mockData = () => {
     const LS = links.map((d) => d.source);
diff --git a/__tests__/plots/static/energy-sankey-defaults.ts b/__tests__/plots/static/energy-sankey-defaults.ts
index 11a0616fdb..a9f75d67bb 100644
--- a/__tests__/plots/static/energy-sankey-defaults.ts
+++ b/__tests__/plots/static/energy-sankey-defaults.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function energySankeyDefaults(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/energy-sankey-view-custom-tooltip.ts b/__tests__/plots/static/energy-sankey-view-custom-tooltip.ts
index de21bd420d..5d5d591426 100644
--- a/__tests__/plots/static/energy-sankey-view-custom-tooltip.ts
+++ b/__tests__/plots/static/energy-sankey-view-custom-tooltip.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function energySankeyViewCustomTooltip(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/english-wordCloud.ts b/__tests__/plots/static/english-wordCloud.ts
index d1ff593654..3cc75622d7 100644
--- a/__tests__/plots/static/english-wordCloud.ts
+++ b/__tests__/plots/static/english-wordCloud.ts
@@ -1,4 +1,4 @@
-import { randomUniform, randomLcg } from 'd3-random';
+import { randomUniform, randomLcg } from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 import { text } from '../../data/txt-wordCloud';
 
diff --git a/__tests__/plots/static/flare-point-circle-pack-custom-auto-padding.ts b/__tests__/plots/static/flare-point-circle-pack-custom-auto-padding.ts
index eca2d545e2..0e4ae3de26 100644
--- a/__tests__/plots/static/flare-point-circle-pack-custom-auto-padding.ts
+++ b/__tests__/plots/static/flare-point-circle-pack-custom-auto-padding.ts
@@ -1,4 +1,4 @@
-import { interpolateHcl } from 'd3-interpolate';
+import { interpolateHcl } from '@antv/vendor/d3-interpolate';
 import { G2Spec } from '../../../src';
 
 export async function flarePointCirclePackCustomAutoPadding(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/flare-point-circle-pack-custom.ts b/__tests__/plots/static/flare-point-circle-pack-custom.ts
index 453162360a..d149f03c06 100644
--- a/__tests__/plots/static/flare-point-circle-pack-custom.ts
+++ b/__tests__/plots/static/flare-point-circle-pack-custom.ts
@@ -1,4 +1,4 @@
-import { interpolateHcl } from 'd3-interpolate';
+import { interpolateHcl } from '@antv/vendor/d3-interpolate';
 import { G2Spec } from '../../../src';
 
 export async function flarePointCirclePackCustom(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/flare-treemap-custom.ts b/__tests__/plots/static/flare-treemap-custom.ts
index 259ca085aa..096dfffda4 100644
--- a/__tests__/plots/static/flare-treemap-custom.ts
+++ b/__tests__/plots/static/flare-treemap-custom.ts
@@ -1,4 +1,4 @@
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { G2Spec } from '../../../src';
 
 export async function flareTreemapCustom(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/hale-choropleth-world.ts b/__tests__/plots/static/hale-choropleth-world.ts
index 892625cb21..1036438fab 100644
--- a/__tests__/plots/static/hale-choropleth-world.ts
+++ b/__tests__/plots/static/hale-choropleth-world.ts
@@ -1,13 +1,13 @@
-import { csv } from 'd3-fetch';
+import { csv } from '@antv/vendor/d3-fetch';
 import { feature, mesh } from 'topojson';
-import { autoType } from 'd3-dsv';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function haleChoroplethWorld(): Promise<G2Spec> {
   const world = await fetch('data/countries-50m.json').then((res) =>
     res.json(),
   );
-  const hale = (await csv('data/hale.csv', autoType)).map((d) => ({
+  const hale = (await csv<any>('data/hale.csv', autoType)).map((d) => ({
     ...d,
     hale: Number.isNaN(d.hale) ? d.hale : d.hale,
   }));
diff --git a/__tests__/plots/static/income-statement-by-region-interval-custom.ts b/__tests__/plots/static/income-statement-by-region-interval-custom.ts
index 8034674fc5..2f1df7c38f 100644
--- a/__tests__/plots/static/income-statement-by-region-interval-custom.ts
+++ b/__tests__/plots/static/income-statement-by-region-interval-custom.ts
@@ -1,4 +1,4 @@
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { incomeStatementByRegion } from '../../data/incomeStatementByRegion';
 
 export function incomeStatementByRegionIntervalCustom() {
diff --git a/__tests__/plots/static/indices-line-chart-facet-axis.ts b/__tests__/plots/static/indices-line-chart-facet-axis.ts
index 6bc50852b6..14ca60a89f 100644
--- a/__tests__/plots/static/indices-line-chart-facet-axis.ts
+++ b/__tests__/plots/static/indices-line-chart-facet-axis.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function indicesLineChartFacetAxis(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/indices-line-point-scale-key.ts b/__tests__/plots/static/indices-line-point-scale-key.ts
index 959bbe2cfc..72704005cc 100644
--- a/__tests__/plots/static/indices-line-point-scale-key.ts
+++ b/__tests__/plots/static/indices-line-point-scale-key.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function indicesLinePointScaleKey(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/miserable-force-custom.ts b/__tests__/plots/static/miserable-force-custom.ts
index da4bd5baf2..8e8838e254 100644
--- a/__tests__/plots/static/miserable-force-custom.ts
+++ b/__tests__/plots/static/miserable-force-custom.ts
@@ -1,4 +1,4 @@
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { G2Spec } from '../../../src';
 
 export function miserableForceCustom(): G2Spec {
diff --git a/__tests__/plots/static/month-interval-facet-circle.ts b/__tests__/plots/static/month-interval-facet-circle.ts
index cfe1099343..1b63c3c759 100644
--- a/__tests__/plots/static/month-interval-facet-circle.ts
+++ b/__tests__/plots/static/month-interval-facet-circle.ts
@@ -1,4 +1,4 @@
-import * as d3 from 'd3-random';
+import * as d3 from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function monthIntervalFacetCircle(): G2Spec {
diff --git a/__tests__/plots/static/month-interval-facet-rect.ts b/__tests__/plots/static/month-interval-facet-rect.ts
index f126b2f4ad..8709685d75 100644
--- a/__tests__/plots/static/month-interval-facet-rect.ts
+++ b/__tests__/plots/static/month-interval-facet-rect.ts
@@ -1,4 +1,4 @@
-import * as d3 from 'd3-random';
+import * as d3 from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function monthIntervalFacetRect(): G2Spec {
diff --git a/__tests__/plots/static/month-interval-radial-facet-rect.ts b/__tests__/plots/static/month-interval-radial-facet-rect.ts
index 6fe6053cc5..aa592a9484 100644
--- a/__tests__/plots/static/month-interval-radial-facet-rect.ts
+++ b/__tests__/plots/static/month-interval-radial-facet-rect.ts
@@ -1,4 +1,4 @@
-import * as d3 from 'd3-random';
+import * as d3 from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function monthIntervalRadialFacetRect(): G2Spec {
diff --git a/__tests__/plots/static/philosophy-wordCloud-custom.ts b/__tests__/plots/static/philosophy-wordCloud-custom.ts
index 750f7d8526..5425257872 100644
--- a/__tests__/plots/static/philosophy-wordCloud-custom.ts
+++ b/__tests__/plots/static/philosophy-wordCloud-custom.ts
@@ -1,4 +1,4 @@
-import { randomUniform, randomLcg } from 'd3-random';
+import { randomUniform, randomLcg } from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function philosophyWordCloudCustom(): G2Spec {
diff --git a/__tests__/plots/static/philosophy-wordCloud-default.ts b/__tests__/plots/static/philosophy-wordCloud-default.ts
index ee667160b5..60fd1a7cf4 100644
--- a/__tests__/plots/static/philosophy-wordCloud-default.ts
+++ b/__tests__/plots/static/philosophy-wordCloud-default.ts
@@ -1,4 +1,4 @@
-import { randomUniform, randomLcg } from 'd3-random';
+import { randomUniform, randomLcg } from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function philosophyWordCloudDefault(): G2Spec {
diff --git a/__tests__/plots/static/philosophy-wordCloud-image.ts b/__tests__/plots/static/philosophy-wordCloud-image.ts
index 94ce13a993..27a286937e 100644
--- a/__tests__/plots/static/philosophy-wordCloud-image.ts
+++ b/__tests__/plots/static/philosophy-wordCloud-image.ts
@@ -1,4 +1,4 @@
-import { randomUniform, randomLcg } from 'd3-random';
+import { randomUniform, randomLcg } from '@antv/vendor/d3-random';
 import { G2Spec } from '../../../src';
 
 export function philosophyWordCloudImage(): G2Spec {
diff --git a/__tests__/plots/static/premier-league-table.ts b/__tests__/plots/static/premier-league-table.ts
index 6bc3dcab22..087d872fc6 100644
--- a/__tests__/plots/static/premier-league-table.ts
+++ b/__tests__/plots/static/premier-league-table.ts
@@ -1,4 +1,4 @@
-import { median } from 'd3-array';
+import { median } from '@antv/vendor/d3-array';
 import { G2Spec } from '../../../src';
 
 const logos = {
diff --git a/__tests__/plots/static/temperature2-line-threshold.ts b/__tests__/plots/static/temperature2-line-threshold.ts
index 807c12e8f9..11b3d25159 100644
--- a/__tests__/plots/static/temperature2-line-threshold.ts
+++ b/__tests__/plots/static/temperature2-line-threshold.ts
@@ -1,6 +1,6 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { median } from 'd3-array';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { median } from '@antv/vendor/d3-array';
 import { G2Spec } from '../../../src';
 
 export async function temperature2LineThreshold(): Promise<G2Spec> {
diff --git a/__tests__/plots/static/train-line-multi-axes-auto-padding-tick-method.ts b/__tests__/plots/static/train-line-multi-axes-auto-padding-tick-method.ts
index fede945eaf..4d0e4e48ce 100644
--- a/__tests__/plots/static/train-line-multi-axes-auto-padding-tick-method.ts
+++ b/__tests__/plots/static/train-line-multi-axes-auto-padding-tick-method.ts
@@ -1,9 +1,9 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function tranLineMultiAxesAutoPaddingTickMethod(): Promise<G2Spec> {
-  const data = await csv('data/train.csv', autoType);
+  const data = await csv<any>('data/train.csv', autoType);
   const distanceName = new Map(data.map((d) => [d.distance, d.name]));
   const xAxis = {
     tickMethod: () => Array.from(distanceName.keys()),
diff --git a/__tests__/plots/static/train-line-multi-axes.ts b/__tests__/plots/static/train-line-multi-axes.ts
index e0623fa886..96d12530ae 100644
--- a/__tests__/plots/static/train-line-multi-axes.ts
+++ b/__tests__/plots/static/train-line-multi-axes.ts
@@ -1,9 +1,14 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
+interface Row {
+  distance: number;
+  name: string;
+}
+
 export async function tranLineMultiAxes(): Promise<G2Spec> {
-  const data = await csv('data/train.csv', autoType);
+  const data = await csv<Row>('data/train.csv', autoType);
   const distanceName = new Map(data.map((d) => [d.distance, d.name]));
   const xAxis = {
     tickMethod: () => Array.from(distanceName.keys()),
diff --git a/__tests__/plots/static/unemployment-choropleth.ts b/__tests__/plots/static/unemployment-choropleth.ts
index b3e54d6fff..87a5fd1dbc 100644
--- a/__tests__/plots/static/unemployment-choropleth.ts
+++ b/__tests__/plots/static/unemployment-choropleth.ts
@@ -1,6 +1,6 @@
-import { tsv } from 'd3-fetch';
+import { tsv } from '@antv/vendor/d3-fetch';
 import { feature } from 'topojson';
-import { autoType } from 'd3-dsv';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 
 export async function unemploymentChoropleth(): Promise<G2Spec> {
diff --git a/__tests__/plots/tooltip/energy-sankey-custom.ts b/__tests__/plots/tooltip/energy-sankey-custom.ts
index 72e1afae61..2968c7a6d9 100644
--- a/__tests__/plots/tooltip/energy-sankey-custom.ts
+++ b/__tests__/plots/tooltip/energy-sankey-custom.ts
@@ -1,11 +1,11 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { G2Spec } from '../../../src';
 import { tooltipSteps } from './utils';
 
 export async function energySankeyCustom(): Promise<G2Spec> {
-  const links = await csv('data/energy.csv', autoType);
+  const links = await csv<any>('data/energy.csv', autoType);
 
   const mockData = () => {
     const LS = links.map((d) => d.source);
diff --git a/__tests__/plots/tooltip/flare-point-circle-pack-custom.ts b/__tests__/plots/tooltip/flare-point-circle-pack-custom.ts
index f160323d2c..a5520e9c75 100644
--- a/__tests__/plots/tooltip/flare-point-circle-pack-custom.ts
+++ b/__tests__/plots/tooltip/flare-point-circle-pack-custom.ts
@@ -1,4 +1,4 @@
-import { interpolateHcl } from 'd3-interpolate';
+import { interpolateHcl } from '@antv/vendor/d3-interpolate';
 import { G2Spec } from '../../../src';
 import { tooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/flare-treemap-default.ts b/__tests__/plots/tooltip/flare-treemap-default.ts
index 406d5fdc06..caafaf81a5 100644
--- a/__tests__/plots/tooltip/flare-treemap-default.ts
+++ b/__tests__/plots/tooltip/flare-treemap-default.ts
@@ -1,4 +1,4 @@
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { G2Spec } from '../../../src';
 import { tooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/flare-treemap-poptip-custom.ts b/__tests__/plots/tooltip/flare-treemap-poptip-custom.ts
index 6a8bb6f324..b3e6cb76a5 100644
--- a/__tests__/plots/tooltip/flare-treemap-poptip-custom.ts
+++ b/__tests__/plots/tooltip/flare-treemap-poptip-custom.ts
@@ -1,4 +1,4 @@
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { CustomEvent, DisplayObject } from '@antv/g';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 
diff --git a/__tests__/plots/tooltip/flare-treemap-poptip.ts b/__tests__/plots/tooltip/flare-treemap-poptip.ts
index 88f5ea3282..64010f4cf8 100644
--- a/__tests__/plots/tooltip/flare-treemap-poptip.ts
+++ b/__tests__/plots/tooltip/flare-treemap-poptip.ts
@@ -1,4 +1,4 @@
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { CustomEvent, DisplayObject } from '@antv/g';
 import { G2Spec, PLOT_CLASS_NAME } from '../../../src';
 
diff --git a/__tests__/plots/tooltip/indices-line-chart-facet.ts b/__tests__/plots/tooltip/indices-line-chart-facet.ts
index 0e4b96553a..af8e3b8167 100644
--- a/__tests__/plots/tooltip/indices-line-chart-facet.ts
+++ b/__tests__/plots/tooltip/indices-line-chart-facet.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/indices-line-custom.ts b/__tests__/plots/tooltip/indices-line-custom.ts
index 4600870e00..35a8239b5f 100644
--- a/__tests__/plots/tooltip/indices-line-custom.ts
+++ b/__tests__/plots/tooltip/indices-line-custom.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 import { render } from './alphabet-interval-custom-dom';
diff --git a/__tests__/plots/tooltip/indices-line-formatter.ts b/__tests__/plots/tooltip/indices-line-formatter.ts
index ae6753ad84..d7b6f1e581 100644
--- a/__tests__/plots/tooltip/indices-line-formatter.ts
+++ b/__tests__/plots/tooltip/indices-line-formatter.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/indices-line-items.ts b/__tests__/plots/tooltip/indices-line-items.ts
index fb97b72d0b..83aca730e8 100644
--- a/__tests__/plots/tooltip/indices-line-items.ts
+++ b/__tests__/plots/tooltip/indices-line-items.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/indices-line-point-reverse.ts b/__tests__/plots/tooltip/indices-line-point-reverse.ts
index 2a0f1d3d76..934816a228 100644
--- a/__tests__/plots/tooltip/indices-line-point-reverse.ts
+++ b/__tests__/plots/tooltip/indices-line-point-reverse.ts
@@ -1,10 +1,14 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
+interface Row {
+  Date: string;
+  Symbol: string;
+}
 export async function indicesLinePointReverse(): Promise<G2Spec> {
-  const raw = await csv('data/indices.csv', autoType);
+  const raw = await csv<Row>('data/indices.csv', autoType);
   const symbols = ['AAPL', 'AMZN'];
   const data = raw.filter((d) => {
     const date = new Date(d.Date);
diff --git a/__tests__/plots/tooltip/indices-line-reverse.ts b/__tests__/plots/tooltip/indices-line-reverse.ts
index 2a745aca63..532d49cb2b 100644
--- a/__tests__/plots/tooltip/indices-line-reverse.ts
+++ b/__tests__/plots/tooltip/indices-line-reverse.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/indices-line-series.ts b/__tests__/plots/tooltip/indices-line-series.ts
index 2434deddaa..635bf6b738 100644
--- a/__tests__/plots/tooltip/indices-line-series.ts
+++ b/__tests__/plots/tooltip/indices-line-series.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/indices-line.ts b/__tests__/plots/tooltip/indices-line.ts
index 85a21e8aab..30ddcf4399 100644
--- a/__tests__/plots/tooltip/indices-line.ts
+++ b/__tests__/plots/tooltip/indices-line.ts
@@ -1,5 +1,5 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/miserable-force-custom.ts b/__tests__/plots/tooltip/miserable-force-custom.ts
index 9f97a35533..220fb29ce1 100644
--- a/__tests__/plots/tooltip/miserable-force-custom.ts
+++ b/__tests__/plots/tooltip/miserable-force-custom.ts
@@ -1,4 +1,4 @@
-import { schemeTableau10 } from 'd3-scale-chromatic';
+import { schemeTableau10 } from '@antv/vendor/d3-scale-chromatic';
 import { G2Spec } from '../../../src';
 import { tooltipStepsByMarkType } from './utils';
 
diff --git a/__tests__/plots/tooltip/points-point-regression-quad.ts b/__tests__/plots/tooltip/points-point-regression-quad.ts
index 95a3fdbae4..284e749788 100644
--- a/__tests__/plots/tooltip/points-point-regression-quad.ts
+++ b/__tests__/plots/tooltip/points-point-regression-quad.ts
@@ -1,4 +1,5 @@
-import { regressionQuad } from 'd3-regression';
+// @ts-ignore
+import { regressionQuad } from '@antv/vendor/d3-regression';
 import { G2Spec } from '../../../src';
 import { points } from '../../data/points';
 import { seriesTooltipSteps } from './utils';
diff --git a/__tests__/plots/tooltip/temperature2-line-threshold.ts b/__tests__/plots/tooltip/temperature2-line-threshold.ts
index 07c1a902c1..7f4977a0b5 100644
--- a/__tests__/plots/tooltip/temperature2-line-threshold.ts
+++ b/__tests__/plots/tooltip/temperature2-line-threshold.ts
@@ -1,6 +1,6 @@
-import { csv } from 'd3-fetch';
-import { autoType } from 'd3-dsv';
-import { median } from 'd3-array';
+import { csv } from '@antv/vendor/d3-fetch';
+import { autoType } from '@antv/vendor/d3-dsv';
+import { median } from '@antv/vendor/d3-array';
 import { G2Spec } from '../../../src';
 import { seriesTooltipSteps } from './utils';
 
diff --git a/__tests__/plots/tooltip/unemployment-choropleth.ts b/__tests__/plots/tooltip/unemployment-choropleth.ts
index f0aaeaa85b..37901560fd 100644
--- a/__tests__/plots/tooltip/unemployment-choropleth.ts
+++ b/__tests__/plots/tooltip/unemployment-choropleth.ts
@@ -1,6 +1,6 @@
-import { tsv } from 'd3-fetch';
+import { tsv } from '@antv/vendor/d3-fetch';
 import { feature } from 'topojson';
-import { autoType } from 'd3-dsv';
+import { autoType } from '@antv/vendor/d3-dsv';
 import { G2Spec } from '../../../src';
 import { tooltipSteps } from './utils';
 
diff --git a/jest.config.js b/jest.config.js
index eee1a6b78d..ee54fd0e53 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -1,6 +1,6 @@
 // Installing third-party modules by tnpm or cnpm will name modules with underscore as prefix.
 // In this case _{module} is also necessary.
-const esm = ['internmap', 'd3-*', 'lodash-es', 'chroma-js']
+const esm = ['internmap', 'd3-*', 'lodash-es', 'chroma-js', '@antv/*']
   .map((d) => `_${d}|${d}`)
   .join('|');
 
@@ -21,5 +21,5 @@ module.exports = {
   collectCoverage: false,
   testRegex: '(/__tests__/.*\\.(test|spec))\\.(ts|tsx|js)$',
   // Transform esm to cjs.
-  transformIgnorePatterns: [`<rootDir>/node_modules/(?!(?:.pnpm/)?(${esm}))`]
+  transformIgnorePatterns: [`<rootDir>/node_modules/(?!(?:.pnpm/)?(${esm}))`],
 };
diff --git a/package.json b/package.json
index 283e98cb5b..030cfb9e72 100644
--- a/package.json
+++ b/package.json
@@ -76,15 +76,7 @@
     "@antv/g-plugin-dragndrop": "^2.0.22",
     "@antv/scale": "^0.4.16",
     "@antv/util": "^3.3.10",
-    "d3-array": "^3.2.4",
-    "d3-dsv": "^3.0.1",
-    "d3-force": "^3.0.0",
-    "d3-format": "^3.1.0",
-    "d3-geo": "^3.1.1",
-    "d3-hierarchy": "^3.1.2",
-    "d3-path": "^3.1.0",
-    "d3-scale-chromatic": "^3.1.0",
-    "d3-shape": "^3.2.0",
+    "@antv/vendor": "1.0.6",
     "flru": "^1.0.2",
     "fmin": "0.0.2",
     "pdfast": "^0.2.0"
@@ -109,9 +101,6 @@
     "@rollup/plugin-json": "^6.1.0",
     "@rollup/plugin-node-resolve": "^15.3.0",
     "@rollup/plugin-terser": "^0.4.4",
-    "@types/d3-array": "3.0.5",
-    "@types/d3-path": "^3.1.0",
-    "@types/d3-shape": "^3.1.6",
     "@types/diff": "^5.2.3",
     "@types/jest": "^26.0.24",
     "@types/pixelmatch": "^5.2.6",
@@ -119,13 +108,6 @@
     "@typescript-eslint/parser": "^4.33.0",
     "conventional-changelog-cli": "^2.2.2",
     "cross-env": "^7.0.3",
-    "d3-dsv": "^3.0.1",
-    "d3-fetch": "^3.0.1",
-    "d3-geo-projection": "^4.0.0",
-    "d3-hierarchy": "^3.1.2",
-    "d3-interpolate": "^3.0.1",
-    "d3-random": "^3.0.1",
-    "d3-regression": "^1.3.10",
     "eslint": "^7.32.0",
     "eslint-plugin-import": "^2.31.0",
     "fecha": "^4.2.3",
@@ -183,4 +165,4 @@
   "bugs": {
     "url": "https://github.com/antvis/g2/issues"
   }
-}
+}
\ No newline at end of file
diff --git a/src/animation/scaleInY.ts b/src/animation/scaleInY.ts
index 49bb0f197f..403efc5f57 100644
--- a/src/animation/scaleInY.ts
+++ b/src/animation/scaleInY.ts
@@ -1,4 +1,4 @@
-import { arc } from 'd3-shape';
+import { arc } from '@antv/vendor/d3-shape';
 import {
   Path,
   convertToPath,
diff --git a/src/animation/waveIn.ts b/src/animation/waveIn.ts
index 1063d7e61f..1c34f7203c 100644
--- a/src/animation/waveIn.ts
+++ b/src/animation/waveIn.ts
@@ -1,4 +1,4 @@
-import { arc } from 'd3-shape';
+import { arc } from '@antv/vendor/d3-shape';
 import { CSS, PropertySyntax } from '@antv/g';
 import { G2Element } from '../utils/selection';
 import { AnimationComponent as AC } from '../runtime';
diff --git a/src/component/axis.ts b/src/component/axis.ts
index 7627b5a3f1..f3d55531a0 100644
--- a/src/component/axis.ts
+++ b/src/component/axis.ts
@@ -3,8 +3,8 @@ import type { DisplayObject } from '@antv/g';
 import { Axis as AxisComponent } from '@antv/component';
 import { Linear as LinearScale } from '@antv/scale';
 import { deepMix, omit, upperFirst } from '@antv/util';
-import { extent } from 'd3-array';
-import { format } from 'd3-format';
+import { extent } from '@antv/vendor/d3-array';
+import { format } from '@antv/vendor/d3-format';
 import {
   BBox,
   G2Theme,
diff --git a/src/component/legendCategory.ts b/src/component/legendCategory.ts
index c8885dba8a..d40fc0c7fe 100644
--- a/src/component/legendCategory.ts
+++ b/src/component/legendCategory.ts
@@ -1,7 +1,7 @@
 import type { DisplayObject } from '@antv/g';
 import { Category } from '@antv/component';
 import { last } from '@antv/util';
-import { format } from 'd3-format';
+import { format } from '@antv/vendor/d3-format';
 import { Identity } from '@antv/scale';
 import type {
   FlexLayout,
diff --git a/src/component/legendContinuous.ts b/src/component/legendContinuous.ts
index 858a4864b8..c44378cc97 100644
--- a/src/component/legendContinuous.ts
+++ b/src/component/legendContinuous.ts
@@ -1,7 +1,7 @@
 import { DisplayObject, parseColor } from '@antv/g';
 import { Continuous } from '@antv/component';
 import { Constant, Quantile, Quantize, Threshold } from '@antv/scale';
-import { format } from 'd3-format';
+import { format } from '@antv/vendor/d3-format';
 import type {
   FlexLayout,
   G2Theme,
diff --git a/src/component/slider.ts b/src/component/slider.ts
index f9139877eb..857ce3039b 100644
--- a/src/component/slider.ts
+++ b/src/component/slider.ts
@@ -1,5 +1,5 @@
 import { Slider as SliderComponent } from '@antv/component';
-import { format } from 'd3-format';
+import { format } from '@antv/vendor/d3-format';
 import { DisplayObject } from '@antv/g';
 import { isArray } from '@antv/util';
 import { isTranspose } from '../utils/coordinate';
diff --git a/src/composition/d3Projection.ts b/src/composition/d3Projection.ts
index 43f05ed695..fbc1309d66 100644
--- a/src/composition/d3Projection.ts
+++ b/src/composition/d3Projection.ts
@@ -30,4 +30,4 @@ export {
   geoStereographicRaw,
   geoTransverseMercator,
   geoTransverseMercatorRaw,
-} from 'd3-geo';
+} from '@antv/vendor/d3-geo';
diff --git a/src/composition/facetRect.ts b/src/composition/facetRect.ts
index 15c7bb581e..8f012df027 100644
--- a/src/composition/facetRect.ts
+++ b/src/composition/facetRect.ts
@@ -1,5 +1,5 @@
 import { deepMix } from '@antv/util';
-import { extent, group, max } from 'd3-array';
+import { extent, group, max } from '@antv/vendor/d3-array';
 import {
   CompositionComponent as CC,
   G2MarkChildrenCallback,
diff --git a/src/composition/geoView.ts b/src/composition/geoView.ts
index f9e3b8ca86..f1d64e916f 100644
--- a/src/composition/geoView.ts
+++ b/src/composition/geoView.ts
@@ -1,6 +1,6 @@
 import { Linear } from '@antv/scale';
 import { upperFirst } from '@antv/util';
-import { geoPath, geoGraticule10 } from 'd3-geo';
+import { geoPath, geoGraticule10 } from '@antv/vendor/d3-geo';
 import { maybeTooltip } from '../utils/mark';
 import { CompositionComponent as CC } from '../runtime';
 import { GeoViewComposition } from '../spec';
diff --git a/src/data/cluster.ts b/src/data/cluster.ts
index 3d2241f5a8..c7944cf30d 100644
--- a/src/data/cluster.ts
+++ b/src/data/cluster.ts
@@ -1,4 +1,4 @@
-import { cluster, hierarchy } from 'd3-hierarchy';
+import { cluster, hierarchy } from '@antv/vendor/d3-hierarchy';
 import { DataComponent as DC } from '../runtime';
 
 export type ClusterOptions = Omit<Record<string, any>, 'type'>;
diff --git a/src/data/fetch.ts b/src/data/fetch.ts
index c02649ab75..e5153bca19 100644
--- a/src/data/fetch.ts
+++ b/src/data/fetch.ts
@@ -1,4 +1,4 @@
-import { dsvFormat, autoType as d3AutoType } from 'd3-dsv';
+import { dsvFormat, autoType as d3AutoType } from '@antv/vendor/d3-dsv';
 import { FetchConnector } from '../spec';
 import { DataComponent as DC } from '../runtime';
 import { identity } from '../utils/helper';
diff --git a/src/data/join.ts b/src/data/join.ts
index 65dfeead90..bf9ee0d869 100644
--- a/src/data/join.ts
+++ b/src/data/join.ts
@@ -1,4 +1,4 @@
-import { rollup } from 'd3-array';
+import { rollup } from '@antv/vendor/d3-array';
 import { DataComponent as DC } from '../runtime';
 import { JoinTransform } from '../spec';
 
diff --git a/src/data/kde.ts b/src/data/kde.ts
index d9bbfb1c25..7e8ae720cd 100644
--- a/src/data/kde.ts
+++ b/src/data/kde.ts
@@ -1,5 +1,5 @@
 import pdf from 'pdfast';
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { DataComponent as DC } from '../runtime';
 import { KDEDataTransform } from '../spec';
 
diff --git a/src/data/tree.ts b/src/data/tree.ts
index 37cace4188..1865dd4463 100644
--- a/src/data/tree.ts
+++ b/src/data/tree.ts
@@ -1,4 +1,4 @@
-import { tree } from 'd3-hierarchy';
+import { tree } from '@antv/vendor/d3-hierarchy';
 import { DataComponent as DC } from '../runtime';
 import { hierarchyFunction } from './cluster';
 
diff --git a/src/data/utils/arc/arc.ts b/src/data/utils/arc/arc.ts
index 566257f81b..38202c0a68 100644
--- a/src/data/utils/arc/arc.ts
+++ b/src/data/utils/arc/arc.ts
@@ -1,4 +1,4 @@
-import { group, sum } from 'd3-array';
+import { group, sum } from '@antv/vendor/d3-array';
 import { error } from '../../../utils/helper';
 import { ArcData, ArcOptions } from './types';
 import * as SortMethods from './sort';
diff --git a/src/data/utils/d3-sankey/align.ts b/src/data/utils/d3-sankey/align.ts
index 6d349b7d85..8f172ea584 100644
--- a/src/data/utils/d3-sankey/align.ts
+++ b/src/data/utils/d3-sankey/align.ts
@@ -1,4 +1,4 @@
-import { min } from 'd3-array';
+import { min } from '@antv/vendor/d3-array';
 
 function targetDepth(d) {
   return d.target.depth;
diff --git a/src/data/utils/d3-sankey/sankey.ts b/src/data/utils/d3-sankey/sankey.ts
index 1fff6bd349..7f3a447453 100644
--- a/src/data/utils/d3-sankey/sankey.ts
+++ b/src/data/utils/d3-sankey/sankey.ts
@@ -1,4 +1,4 @@
-import { sum, max, min } from 'd3-array';
+import { sum, max, min } from '@antv/vendor/d3-array';
 import { justify } from './align';
 import { constant } from './constant';
 
diff --git a/src/data/wordCloud.ts b/src/data/wordCloud.ts
index 4ce656074b..dd5d9da178 100644
--- a/src/data/wordCloud.ts
+++ b/src/data/wordCloud.ts
@@ -1,4 +1,4 @@
-import { min, max } from 'd3-array';
+import { min, max } from '@antv/vendor/d3-array';
 import { DataComponent as DC } from '../runtime';
 import { flow } from './utils/flow';
 import { tagCloud } from './utils/d3-cloud';
diff --git a/src/interaction/chartIndex.ts b/src/interaction/chartIndex.ts
index c8586f4e5d..3346a51676 100644
--- a/src/interaction/chartIndex.ts
+++ b/src/interaction/chartIndex.ts
@@ -8,7 +8,7 @@ import {
   bisectCenter,
   bisector,
   group,
-} from 'd3-array';
+} from '@antv/vendor/d3-array';
 import { G2Element } from 'utils/selection';
 import { subObject } from '../utils/helper';
 import {
diff --git a/src/interaction/elementHighlight.ts b/src/interaction/elementHighlight.ts
index 9064a01184..e53ffd6759 100644
--- a/src/interaction/elementHighlight.ts
+++ b/src/interaction/elementHighlight.ts
@@ -1,6 +1,6 @@
 import { DisplayObject } from '@antv/g';
 import { deepMix } from '@antv/util';
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { subObject } from '../utils/helper';
 import {
   createDatumof,
diff --git a/src/interaction/elementSelect.ts b/src/interaction/elementSelect.ts
index d2f7e88627..11cf197445 100644
--- a/src/interaction/elementSelect.ts
+++ b/src/interaction/elementSelect.ts
@@ -1,5 +1,5 @@
 import { DisplayObject } from '@antv/g';
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { deepMix } from '@antv/util';
 import { subObject } from '../utils/helper';
 import {
diff --git a/src/interaction/legendHighlight.ts b/src/interaction/legendHighlight.ts
index e322ef6e39..562c0f0798 100644
--- a/src/interaction/legendHighlight.ts
+++ b/src/interaction/legendHighlight.ts
@@ -1,4 +1,4 @@
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { subObject } from '../utils/helper';
 import {
   mergeState,
diff --git a/src/interaction/tooltip.ts b/src/interaction/tooltip.ts
index 32b1bcf3a8..abdfda4b1a 100644
--- a/src/interaction/tooltip.ts
+++ b/src/interaction/tooltip.ts
@@ -1,5 +1,5 @@
 import { Circle, DisplayObject, IElement, Line } from '@antv/g';
-import { sort, group, mean, bisector, minIndex } from 'd3-array';
+import { sort, group, mean, bisector, minIndex } from '@antv/vendor/d3-array';
 import { deepMix, lowerFirst, throttle } from '@antv/util';
 import { Tooltip as TooltipComponent } from '@antv/component';
 import { Constant, Band } from '@antv/scale';
diff --git a/src/interaction/treemapDrillDown.ts b/src/interaction/treemapDrillDown.ts
index 57a5fc630c..d5ec9a010f 100644
--- a/src/interaction/treemapDrillDown.ts
+++ b/src/interaction/treemapDrillDown.ts
@@ -1,11 +1,10 @@
 import { Text, Group } from '@antv/g';
 import { get, deepMix, pick, keys, find, size, last } from '@antv/util';
-import type { Node } from 'd3-hierarchy';
 import type { DisplayObject } from '@antv/g';
 import { subObject } from '../utils/helper';
 import { PLOT_CLASS_NAME } from '../runtime';
 import { select } from '../utils/selection';
-import { treeDataTransform } from '../utils/treeDataTransform';
+import { Node, treeDataTransform } from '../utils/treeDataTransform';
 import { legendClearSetState } from './legendFilter';
 import { getElements } from './utils';
 
@@ -14,7 +13,7 @@ function selectPlotArea(root: DisplayObject): DisplayObject {
 }
 
 export type DrillDownOptions = {
-  originData?: Node[];
+  originData?: Node<any>[];
   layout?: any;
   [key: string]: any;
 };
diff --git a/src/interaction/utils.ts b/src/interaction/utils.ts
index 05d86bc201..7f77a392ce 100644
--- a/src/interaction/utils.ts
+++ b/src/interaction/utils.ts
@@ -1,6 +1,6 @@
 import { DisplayObject, Path, AABB } from '@antv/g';
-import { path as d3Path } from 'd3-path';
-import { sort } from 'd3-array';
+import { path as d3Path } from '@antv/vendor/d3-path';
+import { sort } from '@antv/vendor/d3-array';
 import { Vector2 } from '@antv/coord';
 import { filter } from '@antv/util';
 import type { PathArray } from '@antv/util';
diff --git a/src/label-transform/contrastReverse.ts b/src/label-transform/contrastReverse.ts
index 828cf66870..f8f2aaef2c 100644
--- a/src/label-transform/contrastReverse.ts
+++ b/src/label-transform/contrastReverse.ts
@@ -1,5 +1,5 @@
 import { DisplayObject } from '@antv/g';
-import { maxIndex } from 'd3-array';
+import { maxIndex } from '@antv/vendor/d3-array';
 import { ContrastReverseLabelTransform } from '../spec';
 import { LabelTransformComponent as LLC } from '../runtime';
 import { parseToRGB } from '../utils/color';
diff --git a/src/label-transform/overlapDodgeY.ts b/src/label-transform/overlapDodgeY.ts
index b8f1364433..5b97eb7a23 100644
--- a/src/label-transform/overlapDodgeY.ts
+++ b/src/label-transform/overlapDodgeY.ts
@@ -1,5 +1,5 @@
 import { DisplayObject } from '@antv/g';
-import { ascending } from 'd3-array';
+import { ascending } from '@antv/vendor/d3-array';
 import { OverlapDodgeYLabelTransform } from '../spec';
 import { LabelTransformComponent as LLC } from '../runtime';
 
diff --git a/src/mark/area.ts b/src/mark/area.ts
index 9e35a83a17..341265c1e6 100644
--- a/src/mark/area.ts
+++ b/src/mark/area.ts
@@ -1,4 +1,4 @@
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { MarkComponent as MC } from '../runtime';
 import { AreaMark } from '../spec';
 import { AreaShape, AreaHV, AreaHVH, AreaSmooth, AreaVH } from '../shape';
diff --git a/src/mark/boxplot.ts b/src/mark/boxplot.ts
index f35961801f..bbf355b3f1 100644
--- a/src/mark/boxplot.ts
+++ b/src/mark/boxplot.ts
@@ -1,4 +1,9 @@
-import { min as d3Min, max as d3Max, quantile, group } from 'd3-array';
+import {
+  min as d3Min,
+  max as d3Max,
+  quantile,
+  group,
+} from '@antv/vendor/d3-array';
 import { CompositeMarkComponent as CC } from '../runtime';
 import { BoxPlotMark } from '../spec';
 import { subObject } from '../utils/helper';
diff --git a/src/mark/forceGraph.ts b/src/mark/forceGraph.ts
index 549d244bb3..95e64ad02c 100644
--- a/src/mark/forceGraph.ts
+++ b/src/mark/forceGraph.ts
@@ -5,7 +5,7 @@ import {
   forceX,
   forceY,
   forceCenter,
-} from 'd3-force';
+} from '@antv/vendor/d3-force';
 import { deepMix } from '@antv/util';
 import { subObject } from '../utils/helper';
 import { CompositeMarkComponent as CC } from '../runtime';
diff --git a/src/mark/line.ts b/src/mark/line.ts
index d7d96d2bbd..53d9256b5f 100644
--- a/src/mark/line.ts
+++ b/src/mark/line.ts
@@ -1,5 +1,5 @@
 import { Vector } from '@antv/coord';
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { isParallel } from '../utils/coordinate';
 import { Mark, MarkComponent as MC, SingleMark, Vector2 } from '../runtime';
 import { LineMark } from '../spec';
diff --git a/src/mark/pack.ts b/src/mark/pack.ts
index d9e3c23665..199452d69e 100644
--- a/src/mark/pack.ts
+++ b/src/mark/pack.ts
@@ -1,5 +1,9 @@
 import { deepMix, isArray } from '@antv/util';
-import { stratify, hierarchy, pack as packLayout } from 'd3-hierarchy';
+import {
+  stratify,
+  hierarchy,
+  pack as packLayout,
+} from '@antv/vendor/d3-hierarchy';
 import { CompositionComponent as CC } from '../runtime';
 import { subObject } from '../utils/helper';
 import { PackMark } from '../spec';
diff --git a/src/mark/utils.ts b/src/mark/utils.ts
index a91bb873bb..025dcbbc10 100644
--- a/src/mark/utils.ts
+++ b/src/mark/utils.ts
@@ -1,5 +1,5 @@
 import { Band } from '@antv/scale';
-import { Primitive } from 'd3-array';
+import { Primitive } from '@antv/vendor/d3-array';
 import { Vector2 } from '@antv/coord';
 import { Scale } from '../runtime/types/component';
 import { Channel } from '../runtime';
diff --git a/src/runtime/component.ts b/src/runtime/component.ts
index c0730eea2b..94b2ba1afb 100644
--- a/src/runtime/component.ts
+++ b/src/runtime/component.ts
@@ -3,8 +3,8 @@
  */
 import { Coordinate } from '@antv/coord';
 import { deepMix, isEqual } from '@antv/util';
-import { groups, max, sum } from 'd3-array';
-import { format } from 'd3-format';
+import { groups, max, sum } from '@antv/vendor/d3-array';
+import { format } from '@antv/vendor/d3-format';
 import { DisplayObject, Text } from '@antv/g';
 import {
   getPolarOptions,
diff --git a/src/runtime/layout.ts b/src/runtime/layout.ts
index 515238623d..082fe3176c 100644
--- a/src/runtime/layout.ts
+++ b/src/runtime/layout.ts
@@ -1,5 +1,5 @@
 import { Coordinate } from '@antv/coord';
-import { ascending, group, max, min, sum } from 'd3-array';
+import { ascending, group, max, min, sum } from '@antv/vendor/d3-array';
 import { deepMix } from '@antv/util';
 import { isParallel, isPolar, isRadar, radiusOf } from '../utils/coordinate';
 import { capitalizeFirst, defined } from '../utils/helper';
diff --git a/src/runtime/mark.ts b/src/runtime/mark.ts
index 177f36acc6..d76f457304 100644
--- a/src/runtime/mark.ts
+++ b/src/runtime/mark.ts
@@ -1,4 +1,4 @@
-import { rollups } from 'd3-array';
+import { rollups } from '@antv/vendor/d3-array';
 import { defined } from '../utils/helper';
 import { useLibrary } from './library';
 import { G2MarkState } from './types/common';
diff --git a/src/runtime/plot.ts b/src/runtime/plot.ts
index dc5bd0f350..4b67f8c5e0 100644
--- a/src/runtime/plot.ts
+++ b/src/runtime/plot.ts
@@ -1,8 +1,8 @@
 import { Vector2 } from '@antv/coord';
 import { DisplayObject, IAnimation as GAnimation, Rect } from '@antv/g';
 import { deepMix, upperFirst, isArray } from '@antv/util';
-import { group, groups } from 'd3-array';
-import { format } from 'd3-format';
+import { group, groups } from '@antv/vendor/d3-array';
+import { format } from '@antv/vendor/d3-format';
 import { mapObject } from '../utils/array';
 import { ChartEvent } from '../utils/event';
 import {
diff --git a/src/runtime/scale.ts b/src/runtime/scale.ts
index 83e549def8..12d3000046 100644
--- a/src/runtime/scale.ts
+++ b/src/runtime/scale.ts
@@ -1,6 +1,6 @@
 import { Linear, createInterpolateValue } from '@antv/scale';
-import { extent, max, rollups } from 'd3-array';
-import * as d3ScaleChromatic from 'd3-scale-chromatic';
+import { extent, max, rollups } from '@antv/vendor/d3-array';
+import * as d3ScaleChromatic from '@antv/vendor/d3-scale-chromatic';
 import { deepMix, omit, upperFirst } from '@antv/util';
 import { firstOf, lastOf, unique } from '../utils/array';
 import { defined, identity, isStrictObject } from '../utils/helper';
diff --git a/src/runtime/transform.ts b/src/runtime/transform.ts
index 095caa86bf..4984d38d40 100644
--- a/src/runtime/transform.ts
+++ b/src/runtime/transform.ts
@@ -1,6 +1,6 @@
-import { Primitive } from 'd3-array';
+import { Primitive } from '@antv/vendor/d3-array';
 import { deepMix, isNumber } from '@antv/util';
-import { format } from 'd3-format';
+import { format } from '@antv/vendor/d3-format';
 import { indexOf, mapObject } from '../utils/array';
 import {
   composeAsync,
diff --git a/src/runtime/types/mark.ts b/src/runtime/types/mark.ts
index 14f85ec851..ff6c9c2b1a 100644
--- a/src/runtime/types/mark.ts
+++ b/src/runtime/types/mark.ts
@@ -1,5 +1,5 @@
 import { Coordinate, Vector2 } from '@antv/coord';
-import { Primitive } from 'd3-array';
+import { Primitive } from '@antv/vendor/d3-array';
 import { Channel } from './common';
 import { Scale } from './component';
 import { TransformSpec } from './transform';
diff --git a/src/shape/area/area.ts b/src/shape/area/area.ts
index f2412b5bef..40dfab4d93 100644
--- a/src/shape/area/area.ts
+++ b/src/shape/area/area.ts
@@ -1,4 +1,4 @@
-import { curveLinearClosed, curveLinear } from 'd3-shape';
+import { curveLinearClosed, curveLinear } from '@antv/vendor/d3-shape';
 import { isPolar } from '../../utils/coordinate';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
diff --git a/src/shape/area/curve.ts b/src/shape/area/curve.ts
index def38736e1..9a07fef3fe 100644
--- a/src/shape/area/curve.ts
+++ b/src/shape/area/curve.ts
@@ -1,4 +1,4 @@
-import { area, areaRadial, CurveFactory } from 'd3-shape';
+import { area, areaRadial, CurveFactory } from '@antv/vendor/d3-shape';
 import { select } from '../../utils/selection';
 import { isPolar, isTranspose } from '../../utils/coordinate';
 import { Vector2, ShapeComponent as SC } from '../../runtime';
diff --git a/src/shape/area/hv.ts b/src/shape/area/hv.ts
index f3fe69b5ef..a582e6bbdf 100644
--- a/src/shape/area/hv.ts
+++ b/src/shape/area/hv.ts
@@ -1,4 +1,4 @@
-import { curveStepAfter } from 'd3-shape';
+import { curveStepAfter } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
 
diff --git a/src/shape/area/hvh.ts b/src/shape/area/hvh.ts
index 1b136f146c..c60151bf9f 100644
--- a/src/shape/area/hvh.ts
+++ b/src/shape/area/hvh.ts
@@ -1,4 +1,4 @@
-import { curveStep } from 'd3-shape';
+import { curveStep } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
 
diff --git a/src/shape/area/smooth.ts b/src/shape/area/smooth.ts
index e3810b5f72..f38b908219 100644
--- a/src/shape/area/smooth.ts
+++ b/src/shape/area/smooth.ts
@@ -2,7 +2,7 @@ import {
   curveCatmullRomClosed,
   curveMonotoneX,
   curveMonotoneY,
-} from 'd3-shape';
+} from '@antv/vendor/d3-shape';
 import { isPolar, isTranspose } from '../../utils/coordinate';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
diff --git a/src/shape/area/vh.ts b/src/shape/area/vh.ts
index e6e5b47943..9e1a9127ef 100644
--- a/src/shape/area/vh.ts
+++ b/src/shape/area/vh.ts
@@ -1,4 +1,4 @@
-import { curveStepBefore } from 'd3-shape';
+import { curveStepBefore } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
 
diff --git a/src/shape/box/box.ts b/src/shape/box/box.ts
index 32ea3edc8d..5d169a92a3 100644
--- a/src/shape/box/box.ts
+++ b/src/shape/box/box.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { Coordinate } from '@antv/coord';
 import { applyStyle } from '../utils';
 import { select } from '../../utils/selection';
diff --git a/src/shape/box/violin.ts b/src/shape/box/violin.ts
index 0132757c06..09d2b962d3 100644
--- a/src/shape/box/violin.ts
+++ b/src/shape/box/violin.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { Coordinate } from '@antv/coord';
 import { applyStyle } from '../utils';
 import { select } from '../../utils/selection';
diff --git a/src/shape/connector/connector.ts b/src/shape/connector/connector.ts
index 1f2c4aa391..b604cc1813 100644
--- a/src/shape/connector/connector.ts
+++ b/src/shape/connector/connector.ts
@@ -2,7 +2,7 @@ import { Coordinate } from '@antv/coord';
 import type { PathArray } from '@antv/util';
 import { PathStyleProps, Path } from '@antv/g';
 import { Marker } from '@antv/component';
-import { line as d3line } from 'd3-shape';
+import { line as d3line } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC, Vector2, WithPrefix } from '../../runtime';
 import { isTranspose } from '../../utils/coordinate';
 import { subObject } from '../../utils/helper';
diff --git a/src/shape/density/density.ts b/src/shape/density/density.ts
index bbcf81096c..9d74c03b64 100644
--- a/src/shape/density/density.ts
+++ b/src/shape/density/density.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { applyStyle } from '../utils';
 import { select } from '../../utils/selection';
 import { ShapeComponent as SC } from '../../runtime';
diff --git a/src/shape/heatmap/heatmap.ts b/src/shape/heatmap/heatmap.ts
index b429872068..24319bf73f 100644
--- a/src/shape/heatmap/heatmap.ts
+++ b/src/shape/heatmap/heatmap.ts
@@ -1,4 +1,4 @@
-import { max as d3max, min as d3min } from 'd3-array';
+import { max as d3max, min as d3min } from '@antv/vendor/d3-array';
 import { applyStyle } from '../utils';
 import { select } from '../../utils/selection';
 import { ShapeComponent as SC } from '../../runtime';
diff --git a/src/shape/interval/color.ts b/src/shape/interval/color.ts
index db964e30e9..ef10133e95 100644
--- a/src/shape/interval/color.ts
+++ b/src/shape/interval/color.ts
@@ -1,4 +1,4 @@
-import { arc } from 'd3-shape';
+import { arc } from '@antv/vendor/d3-shape';
 import { Vector2, ShapeComponent as SC } from '../../runtime';
 import { isPolar, isHelix, isTranspose } from '../../utils/coordinate';
 import { select } from '../../utils/selection';
diff --git a/src/shape/interval/funnel.ts b/src/shape/interval/funnel.ts
index de43faf79a..95ea8b83b9 100644
--- a/src/shape/interval/funnel.ts
+++ b/src/shape/interval/funnel.ts
@@ -1,4 +1,4 @@
-import { line, curveLinearClosed } from 'd3-shape';
+import { line, curveLinearClosed } from '@antv/vendor/d3-shape';
 import { Coordinate } from '@antv/coord';
 import { isTranspose } from '../../utils/coordinate';
 import { ShapeComponent as SC, Vector2 } from '../../runtime';
diff --git a/src/shape/label/position/area.ts b/src/shape/label/position/area.ts
index 97c7e9bb1a..6c8a684aad 100644
--- a/src/shape/label/position/area.ts
+++ b/src/shape/label/position/area.ts
@@ -1,4 +1,4 @@
-import { maxIndex } from 'd3-array';
+import { maxIndex } from '@antv/vendor/d3-array';
 import { Coordinate } from '@antv/coord';
 import { Vector2 } from '../../../runtime';
 import { sub, angle } from '../../../utils/vector';
diff --git a/src/shape/label/position/utils.ts b/src/shape/label/position/utils.ts
index e19ca5a13d..7d012f93b3 100644
--- a/src/shape/label/position/utils.ts
+++ b/src/shape/label/position/utils.ts
@@ -1,4 +1,4 @@
-import { sort } from 'd3-array';
+import { sort } from '@antv/vendor/d3-array';
 
 // Optimize antiCollision from: https://github.com/antvis/G2/blob/master/src/geometry/label/layout/pie/util.ts
 export function dodgeY(
diff --git a/src/shape/line/curve.ts b/src/shape/line/curve.ts
index d2fabd7ad3..6bae2a5695 100644
--- a/src/shape/line/curve.ts
+++ b/src/shape/line/curve.ts
@@ -1,4 +1,9 @@
-import { line, lineRadial, CurveFactory, CurveFactoryLineOnly } from 'd3-shape';
+import {
+  line,
+  lineRadial,
+  CurveFactory,
+  CurveFactoryLineOnly,
+} from '@antv/vendor/d3-shape';
 import { Vector2 } from '@antv/coord';
 import { isPolar, isTranspose } from '../../utils/coordinate';
 import { select } from '../../utils/selection';
diff --git a/src/shape/line/hv.ts b/src/shape/line/hv.ts
index dd0de9db8f..98125913fa 100644
--- a/src/shape/line/hv.ts
+++ b/src/shape/line/hv.ts
@@ -1,4 +1,4 @@
-import { curveStepAfter } from 'd3-shape';
+import { curveStepAfter } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
 
diff --git a/src/shape/line/hvh.ts b/src/shape/line/hvh.ts
index 579dc8d5c3..a853ccd32e 100644
--- a/src/shape/line/hvh.ts
+++ b/src/shape/line/hvh.ts
@@ -1,4 +1,4 @@
-import { curveStep } from 'd3-shape';
+import { curveStep } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
 
diff --git a/src/shape/line/line.ts b/src/shape/line/line.ts
index 476876faff..873efab56f 100644
--- a/src/shape/line/line.ts
+++ b/src/shape/line/line.ts
@@ -1,4 +1,4 @@
-import { curveLinear, curveLinearClosed } from 'd3-shape';
+import { curveLinear, curveLinearClosed } from '@antv/vendor/d3-shape';
 import { isPolar } from '../../utils/coordinate';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
diff --git a/src/shape/line/smooth.ts b/src/shape/line/smooth.ts
index bac431a477..73cde02cf9 100644
--- a/src/shape/line/smooth.ts
+++ b/src/shape/line/smooth.ts
@@ -2,7 +2,7 @@ import {
   curveMonotoneX,
   curveMonotoneY,
   curveCatmullRomClosed,
-} from 'd3-shape';
+} from '@antv/vendor/d3-shape';
 import { isPolar, isTranspose } from '../../utils/coordinate';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
diff --git a/src/shape/line/trail.ts b/src/shape/line/trail.ts
index 07a369eba4..94c0673eef 100644
--- a/src/shape/line/trail.ts
+++ b/src/shape/line/trail.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { ShapeComponent as SC } from '../../runtime';
 import { select } from '../../utils/selection';
 import { applyStyle } from '../utils';
diff --git a/src/shape/line/vh.ts b/src/shape/line/vh.ts
index a8b40e4a2d..00663bb26e 100644
--- a/src/shape/line/vh.ts
+++ b/src/shape/line/vh.ts
@@ -1,4 +1,4 @@
-import { curveStepBefore } from 'd3-shape';
+import { curveStepBefore } from '@antv/vendor/d3-shape';
 import { ShapeComponent as SC } from '../../runtime';
 import { Curve } from './curve';
 
diff --git a/src/shape/lineXY/line.ts b/src/shape/lineXY/line.ts
index 1add8d6057..6aadcc82b8 100644
--- a/src/shape/lineXY/line.ts
+++ b/src/shape/lineXY/line.ts
@@ -1,6 +1,6 @@
 import { IDocument } from '@antv/g';
 import { Coordinate } from '@antv/coord';
-import { arc, line } from 'd3-shape';
+import { arc, line } from '@antv/vendor/d3-shape';
 import { isPolar } from '../../utils/coordinate';
 import { select } from '../../utils/selection';
 import { dist } from '../../utils/vector';
diff --git a/src/shape/link/arc.ts b/src/shape/link/arc.ts
index 7ea4d41346..5a8cd6b470 100644
--- a/src/shape/link/arc.ts
+++ b/src/shape/link/arc.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { appendArc, applyStyle } from '../utils';
 import { select } from '../../utils/selection';
 import { isPolar } from '../../utils/coordinate';
diff --git a/src/shape/link/smooth.ts b/src/shape/link/smooth.ts
index 7d073f723e..f4729c7222 100644
--- a/src/shape/link/smooth.ts
+++ b/src/shape/link/smooth.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { applyStyle } from '../utils';
 import { select } from '../../utils/selection';
 import { ShapeComponent as SC } from '../../runtime';
diff --git a/src/shape/link/vhv.ts b/src/shape/link/vhv.ts
index ca8c835bf0..187e87e019 100644
--- a/src/shape/link/vhv.ts
+++ b/src/shape/link/vhv.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { Coordinate } from '@antv/coord';
 import { appendArc, applyStyle } from '../utils';
 import { select } from '../../utils/selection';
diff --git a/src/shape/polygon/polygon.ts b/src/shape/polygon/polygon.ts
index 95ac3f8352..0b81a091c0 100644
--- a/src/shape/polygon/polygon.ts
+++ b/src/shape/polygon/polygon.ts
@@ -1,5 +1,5 @@
 import { Coordinate } from '@antv/coord';
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { isPolar } from '../../utils/coordinate';
 import { applyStyle, appendPolygon, appendArc } from '../utils';
 import { select } from '../../utils/selection';
diff --git a/src/shape/polygon/ribbon.ts b/src/shape/polygon/ribbon.ts
index b7b6898356..8517e4d1f5 100644
--- a/src/shape/polygon/ribbon.ts
+++ b/src/shape/polygon/ribbon.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { Coordinate } from '@antv/coord';
 import { appendArc, applyStyle } from '../utils';
 import { select } from '../../utils/selection';
diff --git a/src/shape/text/advance.ts b/src/shape/text/advance.ts
index ea0e1e72ad..486b563c9a 100644
--- a/src/shape/text/advance.ts
+++ b/src/shape/text/advance.ts
@@ -9,7 +9,7 @@ import {
 } from '@antv/g';
 import { isNumber } from '@antv/util';
 import { Marker } from '@antv/component';
-import { line } from 'd3-shape';
+import { line } from '@antv/vendor/d3-shape';
 import { WithPrefix } from '../../runtime';
 import { createElement } from '../../utils/createElement';
 import { applyStyle } from '../utils';
diff --git a/src/shape/utils.ts b/src/shape/utils.ts
index 46828c05d1..4da8abb188 100644
--- a/src/shape/utils.ts
+++ b/src/shape/utils.ts
@@ -1,8 +1,8 @@
 import { Coordinate } from '@antv/coord';
 import { Linear } from '@antv/scale';
 import { isNumber, lowerFirst } from '@antv/util';
-import { extent } from 'd3-array';
-import { Path as D3Path } from 'd3-path';
+import { extent } from '@antv/vendor/d3-array';
+import { Path as D3Path } from '@antv/vendor/d3-path';
 import { Primitive, Vector2, Vector3 } from '../runtime';
 import { indexOf } from '../utils/array';
 import { isPolar, isTranspose } from '../utils/coordinate';
diff --git a/src/shape/vector/vector.ts b/src/shape/vector/vector.ts
index e32e26295c..8ec44b2f66 100644
--- a/src/shape/vector/vector.ts
+++ b/src/shape/vector/vector.ts
@@ -1,4 +1,4 @@
-import { path as d3path } from 'd3-path';
+import { path as d3path } from '@antv/vendor/d3-path';
 import { applyStyle, arrowPoints, ArrowOptions } from '../utils';
 import { select } from '../../utils/selection';
 import { ShapeComponent as SC } from '../../runtime';
diff --git a/src/transform/bin.ts b/src/transform/bin.ts
index 80e0d6a09f..c974e458c0 100644
--- a/src/transform/bin.ts
+++ b/src/transform/bin.ts
@@ -1,4 +1,9 @@
-import { bin as d3Bin, group, thresholdScott, extent } from 'd3-array';
+import {
+  bin as d3Bin,
+  group,
+  thresholdScott,
+  extent,
+} from '@antv/vendor/d3-array';
 import { defined, subObject } from '../utils/helper';
 import { TransformComponent as TC } from '../runtime';
 import { BinTransform } from '../spec';
diff --git a/src/transform/flexX.ts b/src/transform/flexX.ts
index eaa917a14d..787bc1b005 100644
--- a/src/transform/flexX.ts
+++ b/src/transform/flexX.ts
@@ -1,5 +1,5 @@
 import { deepMix } from '@antv/util';
-import { rollups, sum, Primitive } from 'd3-array';
+import { rollups, sum, Primitive } from '@antv/vendor/d3-array';
 import { TransformComponent as TC } from '../runtime';
 import { FlexXTransform } from '../spec';
 import { columnOf } from './utils/helper';
diff --git a/src/transform/groupN.ts b/src/transform/groupN.ts
index 61fe7de887..a6377c93ce 100644
--- a/src/transform/groupN.ts
+++ b/src/transform/groupN.ts
@@ -5,7 +5,7 @@ import {
   sum as d3Sum,
   min as d3Min,
   median as d3Median,
-} from 'd3-array';
+} from '@antv/vendor/d3-array';
 import { TransformComponent as TC, Primitive, G2Mark } from '../runtime';
 import { GroupTransform, Reducer } from '../spec';
 import { indexOf } from '../utils/array';
diff --git a/src/transform/normalizeY.ts b/src/transform/normalizeY.ts
index 67cf340ec0..b9aaaa423b 100644
--- a/src/transform/normalizeY.ts
+++ b/src/transform/normalizeY.ts
@@ -1,5 +1,5 @@
 import { deepMix } from '@antv/util';
-import { mean, deviation, median, sum, max, min } from 'd3-array';
+import { mean, deviation, median, sum, max, min } from '@antv/vendor/d3-array';
 import { isUnset } from '../utils/helper';
 import { TransformComponent as TC } from '../runtime';
 import { NormalizeYTransform } from '../spec';
diff --git a/src/transform/sample.ts b/src/transform/sample.ts
index 926f70ec2d..61e1687bdd 100644
--- a/src/transform/sample.ts
+++ b/src/transform/sample.ts
@@ -1,5 +1,5 @@
 // @ts-ignore medianIndex exist in d3-array@3.2.0, but @types/d3-array Expired.
-import { maxIndex, minIndex, medianIndex } from 'd3-array';
+import { maxIndex, minIndex, medianIndex } from '@antv/vendor/d3-array';
 import { TransformComponent as TC, Primitive } from '../runtime';
 import { SampleTransform, SampleFunction } from '../spec';
 import { createGroups } from './utils/order';
diff --git a/src/transform/select.ts b/src/transform/select.ts
index 8433dc55e7..8ebadf98c4 100644
--- a/src/transform/select.ts
+++ b/src/transform/select.ts
@@ -1,4 +1,4 @@
-import { maxIndex, minIndex } from 'd3-array';
+import { maxIndex, minIndex } from '@antv/vendor/d3-array';
 import { TransformComponent as TC } from '../runtime';
 import { SelectTransform, Selector } from '../spec';
 import { columnOf } from './utils/helper';
diff --git a/src/transform/sort.ts b/src/transform/sort.ts
index be5f2d731e..099c9bc289 100644
--- a/src/transform/sort.ts
+++ b/src/transform/sort.ts
@@ -8,7 +8,7 @@ import {
   mean,
   median,
   sort,
-} from 'd3-array';
+} from '@antv/vendor/d3-array';
 import { G2Mark, TransformComponent as TC } from '../runtime';
 import { columnOf } from './utils/helper';
 
diff --git a/src/transform/stackEnter.ts b/src/transform/stackEnter.ts
index 50e5caa1e3..1b7ef4bc79 100644
--- a/src/transform/stackEnter.ts
+++ b/src/transform/stackEnter.ts
@@ -1,5 +1,5 @@
 import { deepMix } from '@antv/util';
-import { group, max } from 'd3-array';
+import { group, max } from '@antv/vendor/d3-array';
 import { TransformComponent as TC } from '../runtime';
 import { StackEnterTransform } from '../spec';
 import {
diff --git a/src/transform/symmetryY.ts b/src/transform/symmetryY.ts
index 82fabef44b..f6f9add372 100644
--- a/src/transform/symmetryY.ts
+++ b/src/transform/symmetryY.ts
@@ -1,5 +1,5 @@
 import { deepMix } from '@antv/util';
-import { extent } from 'd3-array';
+import { extent } from '@antv/vendor/d3-array';
 import { TransformComponent as TC } from '../runtime';
 import { SymmetryYTransform } from '../spec';
 import { columnOf, column } from './utils/helper';
diff --git a/src/transform/utils/order.ts b/src/transform/utils/order.ts
index 7057f661b6..631479fec2 100644
--- a/src/transform/utils/order.ts
+++ b/src/transform/utils/order.ts
@@ -1,4 +1,4 @@
-import { group, ascending, maxIndex, Primitive } from 'd3-array';
+import { group, ascending, maxIndex, Primitive } from '@antv/vendor/d3-array';
 import { defined } from '../../utils/helper';
 import { TabularData, G2Mark } from '../../runtime';
 import { indexOf } from '../../utils/array';
diff --git a/src/utils/scale.ts b/src/utils/scale.ts
index 2e0177edc8..f2f46ab01e 100644
--- a/src/utils/scale.ts
+++ b/src/utils/scale.ts
@@ -1,4 +1,4 @@
-import { bisectLeft, sort } from 'd3-array';
+import { bisectLeft, sort } from '@antv/vendor/d3-array';
 
 function constrain(x, lo, hi) {
   return Math.min(hi, Math.max(lo, x));
diff --git a/src/utils/selection.ts b/src/utils/selection.ts
index ca15e32cab..00403ef285 100644
--- a/src/utils/selection.ts
+++ b/src/utils/selection.ts
@@ -15,7 +15,7 @@ import {
   HTML,
   IAnimation as GAnimation,
 } from '@antv/g';
-import { group } from 'd3-array';
+import { group } from '@antv/vendor/d3-array';
 import { error } from './helper';
 
 export type G2Element = DisplayObject & {
diff --git a/src/utils/treeDataTransform.ts b/src/utils/treeDataTransform.ts
index a8767e5aea..ee68062d9f 100644
--- a/src/utils/treeDataTransform.ts
+++ b/src/utils/treeDataTransform.ts
@@ -9,10 +9,19 @@ import {
   treemapSliceDice,
   treemapSquarify,
   treemapResquarify,
-} from 'd3-hierarchy';
-import type { Node } from 'd3-hierarchy';
+} from '@antv/vendor/d3-hierarchy';
+import type { HierarchyNode } from '@antv/vendor/d3-hierarchy';
 import { field } from '../mark/utils';
 
+type Data = any[] | Record<string, any>;
+
+export interface Node<T> extends HierarchyNode<T> {
+  x0?: number;
+  y0?: number;
+  x1?: number;
+  y1?: number;
+}
+
 type Layout = {
   tile?:
     | 'treemapBinary'
@@ -43,10 +52,7 @@ type Layout = {
  * @description Path need when the data is a flat json structure,
  * and the tree object structure do not need.
  */
-function generateHierarchyRoot(
-  data: any[] | Record<string, any>,
-  path: (d: any) => any,
-): Node {
+function generateHierarchyRoot(data: Data, path: (d: any) => any): Node<Data> {
   if (Array.isArray(data)) {
     return typeof path === 'function'
       ? stratify().path(path)(data)
@@ -55,20 +61,25 @@ function generateHierarchyRoot(
   return hierarchy(data);
 }
 
-function addObjectDataPath(root: Node, path = [root.data.name]) {
+function addObjectDataPath(
+  root: Node<Record<string, any>>,
+  path: any = [root.data.name],
+) {
+  // @ts-ignore
   root.id = root.id || root.data.name;
   root.path = path;
 
   if (root.children) {
     root.children.forEach((item) => {
+      // @ts-ignore
       item.id = `${root.id}/${item.data.name}`;
-      item.path = [...path, item.data.name];
+      item.path = [...path, item.data.name] as any;
       addObjectDataPath(item, item.path);
     });
   }
 }
 
-function addArrayDataPath(root: Node) {
+function addArrayDataPath(root: Node<any[]>) {
   const name = get(root, ['data', 'name']);
   if (name.replaceAll) {
     root.path = name.replaceAll('.', '/').split('/');
@@ -102,23 +113,25 @@ export function treeDataTransform(
   data,
   layout: Layout,
   encode,
-): [Node[], Node[]] {
+): [Node<Data>[], Node<Data>[]] {
   const { value } = encode;
   const tileMethod = getTileMethod(layout.tile, layout.ratio);
 
   const root = generateHierarchyRoot(data, layout.path);
 
   if (isArray(data)) {
-    addArrayDataPath(root);
+    addArrayDataPath(root as HierarchyNode<any[]>);
   } else {
-    addObjectDataPath(root);
+    addObjectDataPath(root as HierarchyNode<Record<string, any>>);
   }
 
   // Calculate the value and sort.
   value
     ? root
         .sum((d) =>
-          layout.ignoreParentValue && d.children ? 0 : field(value)(d),
+          layout.ignoreParentValue && (d as Record<string, any>).children
+            ? 0
+            : field(value)(d),
         )
         .sort(layout.sort)
     : root.count();