【问题标题】:how to manage vendor libs in reactjs如何在 reactjs 中管理供应商库
【发布时间】:2018-12-01 22:11:24
【问题描述】:

在我的 react js 应用程序(使用 webpack)中,我使用了antd UI,它在我的项目中添加了 draft-js 包。但我不知道我在哪里使用 draft.js
我有两个问题。
1-我怎么知道我在哪里使用了 Draft-js。
2-draft.js 增加我的bundle 文件大小。我从我的node_modules 中删除了draft-js,它显示错误“draft-js”未找到。

package.json

"dependencies": {
    "antd": "^3.10.9",
    "axios": "^0.18.0",
    "bundle-loader": "^0.5.6",
    "express-static-gzip": "^1.1.3",
    "moment": "^2.22.1",
    "node-sass": "^4.7.2",
    "normalize.css": "7.0.0",
    "npm": "^6.1.0",
    "rc-time-picker": "^3.3.1",
    "react": "16.0.0",
    "react-dom": "16.0.0",
    "react-ga": "^2.5.3",
    "react-google-maps": "^9.4.5",
    "react-loadable": "^5.5.0",
    "react-redux": "^5.0.7",
    "react-router": "^4.2.0",
    "react-router-dom": "^4.2.2",
    "recompose": "^0.27.1",
    "redux": "^3.7.2",
    "redux-thunk": "^2.2.0"
  },

immutable.js 安装两次另一件事是,在做了 gzip 之后,还有 antd@ant-design 库增加了我的 捆绑大小。

那么我该如何解决这些烂摊子。

【问题讨论】:

    标签: reactjs npm webpack antd webpack-bundle-analyzer


    【解决方案1】:

    要回答您的主要问题,draft-js 是您的应用程序的传递依赖项。要确定它的使用位置,您需要查看依赖它的直接依赖项的代码(最好是源代码)。在这种情况下,那就是 antd@^3.10.9。

    虽然有特定的例外,但通常不可能有直接依赖关系而不传递依赖于它的依赖关系。

    为了解决在不同版本中多次安装 ImmutableJS 的感知问题,应用相同的逻辑。当您的两个或多个依赖项对同一包的非重叠版本具有传递依赖时,您最终会安装该包的多个版本。如果没有这种行为,您的依赖项将无法正常工作。

    换句话说,将单个包的不兼容版本视为单独的逻辑包。

    话虽如此,使用某些工具(如 RequireJS 和 SystemJS 等)覆盖传递依赖项是可能的,例如强制它们使用 ImmutableJS 的共享版本。然而,这种方法虽然强大,但必须非常小心地使用,因为它们可能确实依赖于特定于它们最初指定的版本的行为。

    【讨论】:

    • 感谢您提供精彩的解释方式,但无论如何我构建的产品包只使用了我在项目中使用的代码库。或者任何方式都可以减少我的库大小):
    • 很高兴能为您服务。关于捆绑包的大小,您最好的选择可能是将其分成多个捆绑包。这不会使您的应用程序变小,但如果它的结构合理,则可以很好地减少启动时间。但问题是,当您说您只想包含您在项目中使用的那些库时,实际上就是正在发生的事情。您正在使用的库正在使用其他库。
    猜你喜欢
    • 2017-09-28
    • 2015-05-18
    • 1970-01-01
    • 2018-06-10
    • 2017-07-18
    • 2018-03-21
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多