使用 react 框架时 node_modules 文件太多

Posted

技术标签:

【中文标题】使用 react 框架时 node_modules 文件太多【英文标题】:node_modules has too many files when using react framework 【发布时间】:2018-12-18 13:50:10 【问题描述】:

当我使用 react 框架并执行 npm install 时,我的 node_modules 上生成了大约 27,000 个文件。大小不是问题,而是文件的数量。如果我必须将该目录复制到其他地方,由于文件太多,需要很长时间。如果我必须删除它,那也需要很长时间。我的 Google 驱动器同步没有 node_modules 的“排除文件夹”选项,因此,与云同步也需要很长时间。我也不喜欢我拥有的每个 react 项目都会生成另外 27,000 个文件的事实。

有人对此有解决方案吗?基本上,我不希望我创建的每个 react 项目都有 27,000 个文件。我正在考虑在某个地方只拥有一个 GLOBAL node_modules,所有反应应用程序都会调用它,而不是创建自己的 node_modules 文件夹。

这是我的 package.json


  "name": "react-typescript-tutorial",
  "version": "0.1.0",
  "private": true,
  "dependencies": 
    "axios": "^0.18.0",
    "enzyme": "^3.3.0",
    "react": "^16.4.1",
    "react-bootstrap": "^0.32.1",
    "react-dom": "^16.4.1",
    "react-redux": "^5.0.2",
    "react-router-dom": "^4.3.1",
    "react-router-redux": "^5.0.0-alpha.9",
    "redux": "^4.0.0",
    "redux-thunk": "^2.3.0"
  ,
  "scripts": 
    "start": "react-scripts-ts start",
    "build": "react-scripts-ts build",
    "test": "react-scripts-ts test --env=jsdom",
    "eject": "react-scripts-ts eject"
  

附:如果它可以生成更少的文件,我愿意更改为不同的包管理器,例如 yarn 或其他。

【问题讨论】:

您是否将项目存储在 Google 云端硬盘中?我建议使用例如而是使用 GitHub,并使用带有 node_modules.gitignore 文件。 我们在主要项目中使用 TFS。这只是我猜的一个例子。此外,当我们执行备份硬盘驱动器之类的操作时,处理如此多的文件需要更长的时间。 没有。这些文件是依赖项,因此无论您使用什么包管理器都需要这些文件。您最多可以做的是“忽略”同步/备份/您使用的任何工具中的所述文件夹。如果他们没有这样的支持……使用其他工具……或者不要使用 react 啊,我明白了。我不知道您是否可以将每个项目的所有依赖项存储在一个地方,但在备份之前使用script like this 可能是值得的。 感谢@Tholle,这肯定会有所帮助。另外,我不确定为什么这会被如此低估,显然,如果这样的帖子首先存在,那么出于各种原因,某些人会担心。 【参考方案1】:

我同意,他们制作了多少文件,这太荒谬了。如果他们不在一个新文件中只写十行会更好。我认为结构不是很健壮。而糟糕的文件系统必须制作所有这些文件。幸运的是我不再使用硬盘了,但处理很多文件仍然需要更长的时间。

编辑:所以我刚刚检查了我的 react ++ mobx、+decorators 项目,它有一个用于重复文件的小项目的 node_modules 文件夹。它有 16000 个重复文件,可以清理 150MB 和 280MB。我认为这完全没有必要。当每个依赖项可以使用相同的版本时,它们可能有多个版本。

【讨论】:

【参考方案2】:

试试这个:

    在全局中安装所有依赖项。 转到它的每个模块(只是依赖项中的模块)并运行npm link您注册了该模块。 转到您的项目并运行npm link <name module need link> 完成,npm 创建了指向您的依赖项的链接

我没有谷歌驱动同步它,但npm不需要安装它。

你可以试试 Exclude folder in Folder 或 Exclude subfolder from sync, but keep this folder in PC

或者你不使用npm install 来安装模块。 您应该为所有人安装全局并将环境变量 NODE_PATH 设置为全局 node_modules。 当需要时,节点会调用它。

【讨论】:

【参考方案3】:

我正在考虑学习其他东西。

Elm 听起来很有组织和整洁的文件系统。 谷歌的聚合物项目旨在将网络改变为根本不需要任何框架。

【讨论】:

以上是关于使用 react 框架时 node_modules 文件太多的主要内容,如果未能解决你的问题,请参考以下文章

React 故事书 sass-loader 导入 node_modules

Webpack + React + TypeScript:未找到模块 ... in ... node_modules/react/

使用 React 开发游戏时发现错误

在`../node_modules/react-native-view-pdf`中找不到`RNPDF`的podspec

当您通过 NPM 安装 CSS 框架并排除 node_modules 文件夹时,如何在 VS Code 中使用 CSS 框架自动完成?

在子位置运行时反应脚本父文件夹node_modules错误