使用 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/
在`../node_modules/react-native-view-pdf`中找不到`RNPDF`的podspec
当您通过 NPM 安装 CSS 框架并排除 node_modules 文件夹时,如何在 VS Code 中使用 CSS 框架自动完成?