【问题标题】:Can I review which node_modules I need?我可以查看我需要哪些 node_modules 吗?
【发布时间】:2020-12-22 11:00:37
【问题描述】:

有没有办法查看我的 create-react-app 项目中使用了哪些 node_modules 包并删除未使用的模块?除了手动检查所有使用的包及其依赖项之外?

我想减少项目使用的空间量。它被提交到资源存储库,仅 node_modules 文件夹就使使用的空间增加了三倍。

【问题讨论】:

  • 不要提交 node_modules。如果您需要存储工件,请存储构建应用程序的结果,而不是源代码和所有 deps。
  • 这可能是一个很好的起点:gist.github.com/dimkirt/873adea886c4204f74440a2a09d5b2a9 虽然最终你需要自己制作一个
  • @jonrsharpe 在这种情况下是无法避免的。我正在使用 git 的替代品,因此无法使用 gitignore 等工具。鉴于项目使用方式的性质,在此级别需要访问 node_modules。
  • 您使用的是什么 VCS。项目如何使用?如果没有上下文,这看起来很像 XY 问题。

标签: javascript npm node-modules create-react-app


【解决方案1】:

可能最简单的方法是不通过将节点模块添加到 gitignore 文件(或创建一个)来包含它,但如果这不是一个选项,可能只是卸载不需要的包

【讨论】:

    【解决方案2】:

    对于 repo 大小(假设您使用的是 git):

    1. git rm -r --cached ./node_modules
    2. /node_modules 行添加到您的.gitignore 文件中
    3. git add .
    4. git commit -m "Remove node_modules from repo"

    构建大小:

    create-react-apptree shaking 方面相当出色,因此您不必为此担心太多。某些包可能有更模块化的导入方式,这会有所帮助 - 通常这些将在逐个包的基础上记录。例如Material UI icons 支持两种import 语法:

    // option 1
    import AccessAlarmIcon from '@material-ui/icons/AccessAlarm'
    import ThreeDRotation from '@material-ui/icons/ThreeDRotation'
    // option 2
    import { AccessAlarm, ThreeDRotation } from '@material-ui/icons'
    

    其中,选项 1 可能会产生最小的包大小。

    对于您的开发机器上的大小:

    您可以在这里做出的最大改变(假设您有其他项目)可能是切换到 pnpm 之类的东西,它将 node_modules 集中存储在您的本地计算机上,然后从您的项目链接到它们,而不是让许多相同模块的实例。

    一般的家务和整洁:

    您可以尝试使用诸如depcheck 之类的工具来检测未使用的依赖项。不过,这可能有点矫枉过正,除非它是您项目的特定痛点。

    【讨论】:

    • 谢谢,depcheck 正是我所追求的。然而,它似乎强调除了我的一个依赖项之外的所有依赖项都在使用中。我可能需要进一步调查优化代码库的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2017-07-23
    • 1970-01-01
    • 2019-01-30
    相关资源
    最近更新 更多