如何摇树@carbon/图表反应?

How to Tree shake @carbon/charts-react?

提问人:Alan Omar 提问时间:11/10/2023 最后编辑:Alan Omar 更新时间:11/23/2023 访问量:48

问:

我正在构建一个 react 组件库,这个库有依赖项。@carbon/charts-react

在我从中导入的组件之一中,这是我在 lib 中使用的唯一组件。RadarChart@carbon/chars-react@carbon/charts-react

import { RadarChart as RadarChartCarbon } from '@carbon/charts-react';

问题:

当我运行 rollup 来构建库时,我注意到整个都包含在构建中。@carbon/charts-react

Ho 在构建中只包含组件?提前致谢。RadarChart

下面是 rollup 配置:

export default {
  input: 'src/index.js',
  output: [
    {
      format: 'es',
      dir: 'build',
      // preserveModules: true,
      // preserveModulesRoot: 'src',
      // sourcemap: false,
    },
  ],

  plugins: [
    peerDepsExternal(),
    typescript({
      module: 'ESNext',
      declarationDir: './build',
    }),
    commonjs({
      include: 'node_modules/**',
      namedExports: {
        'react-is': ['isForwardRef', 'isValidElementType'],
      },
    }),
    resolve({
      preferBuiltins: true,
    }),
    babel({
      babelHelpers: 'runtime',
      exclude: 'node_modules/**',
      presets: ['@babel/preset-react'],
      plugins: [['@babel/plugin-transform-runtime', { useESModules: true }]],
    }),
    postcss({
      to: './build/base.css',
      preprocessor: (content, id) =>
        new Promise(res => {
          const result = sass.renderSync({ file: id });

          res({ code: result.css.toString() });
        }),
      plugins: [url(options), autoprefixer],
      modules: {
        scopeBehaviour: 'global',
      },
      extract: 'base.css',
      use: [
        [
          'sass',
          {
            includePaths: ['./node_modules'],
          },
        ],
      ],
    }),
    json(),
    terser(),
    del({ targets: 'build/*' }),
    visualizer({
      open: true,
    }),
  ],
};

雷达图

enter image description here

Rollup 摇树

评论


答:

2赞 ArrayConstructor 11/23/2023 #1

可悲的是,图书馆不是摇树的。@carbon/charts-react

screen

(使用 Agadoo 测试)

因此,无论您如何导入,只要它是从中导入的,它就会获取最终捆绑包中的所有内容。index.js

您可以做的是像这样导入:

  import RadarChartCarbon from 'Relative/path/to/node_modules/@carbon/charts-react/dist/charts/RadarChart';

这样,您只会在最终捆绑包中获取所需的图表。

希望对您有所帮助!:)