【问题标题】:How to remove dead code in Create React App如何在 Create React App 中删除死代码
【发布时间】:2019-02-20 11:44:56
【问题描述】:

我有一个 create-react-app 项目,我正在努力减少捆绑的 JS 文件大小。我的包大小的大约一半来自名为 MDBReact(一个反应组件库)的依赖项,其中大部分都没有被使用。我试图找出如何/是否可以从捆绑构建中删除带有摇树摇晃的死代码。我已经研究了一段时间,我找到的最接近的文章是this。这篇文章让我感到困惑,它没有解释如何或是否可以做到。我还找到了this webpack tree shaking 指南,解释了它是如何完成的,但这似乎并不能解决问题。

【问题讨论】:

标签: reactjs webpack babeljs create-react-app tree-shaking


【解决方案1】:

CRA 正在使用 webpack 来捆绑代码。 Webpack默认只能treeshake es模块,使用插件时只能treeshake commonjs模块。

为了帮助您,您目前如何从 MDBReact 导入?

看起来 MDBReact 不是用 es 模块编写的,因此如果您使用以下 import 语句,webpack 将很难进行树抖动:

import { module } from 'MDBReact';

您可以尝试使用以下方式导入

import modules from 'MDBReact/module';

您可能必须根据 MDBReact 的结构更改模块的路径。查看 node_modules 文件夹以找出答案。

【讨论】:

  • 我目前正在导入您在第一个示例中描述的方式。在 node_modules 中,看起来 MDBReact 有一个所有组件都来自的 .js 文件。我尝试根据您的第二个示例导入组件,例如 import Navbar from 'mdbreact/Navbar'import Navbar from 'mdbreact',这两个都使应用程序崩溃
  • 刚下载了这个包,看起来所有的源代码都被压缩到一个文件中,这将使 webpack 很难进行 treeshake,因为 webpack 在构建时无法知道会发生什么使用与否。不幸的是,为了减小包大小,您最好的选择似乎是切换组件库。 Semantic UI 是一个完整的库,可以开箱即用地实现三个摇动。你可以看看那个。抱歉,我无法提供更多帮助。
  • 感谢您的帮助,非常感谢
猜你喜欢
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
  • 2022-06-19
  • 2021-01-19
  • 2019-02-01
  • 1970-01-01
  • 2020-07-15
  • 2018-11-27
相关资源
最近更新 更多