Nodejs node_modules 小文件真是多的离谱

发布于 1周前 作者 sinazl 来自 nodejs/Nestjs

忘记打包了,直接移动源码,好家伙,文件管理器移动进度直接卡住。点关闭,没效果,强行关闭。卧槽了!文件数据给我弄坏了!给我代码弄得缺胳膊少腿的,源码文件最后少了一段,开头也乱码了!哎!


Nodejs node_modules 小文件真是多的离谱
43 回复

黑洞可不是白叫的,233


但说实话这得怪微软(
它们也知道复制小文件慢所以才搞 dev drive

小文件方便摇树啊. 我这组里都是恨不得一个函数一个文件的.

等等,你不用 git 的吗

朋友,若你有经验,能否分享下,dev drive 好用吗?

git 没用,github 也没上传,哭死。

esm 时代不需要手动拆这么细了,只需要按实际目的拆即可

我现在不用 git 写代码都不踏实

你可能在找 P’n’P ?虽然我不用。

可不可以删掉 node_modules 再移动,到新目录再执行 npm install ? npm 这些应该都有缓存的。移动文件最怕遇到 node_modules 和 .git

哎,长记性了

我之前测的在 windows 下面删 nodemodules 最快的办法是 rimraf 。。。
只比 rm -rf 慢 12 倍。。。
原生的 rmdir 或者 rm 在 ntfs 下面比 ubuntu+ext4 要慢 30 倍左右。。。

首谈开个 wsl1 用 mv

我觉得 node_modules 非常有必要直接走内存。。虽然听上去有点扯,但是每次删除都要半天,确实服气得很呢。

用 pnpm 吧,node_modules 目录下很多是链接目录,实际文件都在缓存里面。

谁会整天没事干就删除 node_modules 文件夹

node_modules 一个重要作用是,方便你删除文件时反悔

npm 确实大便

受 po 启发,写了一个优化 node_modules 的小工具: https://github.com/Plumbiu/prune-npm

搬运 node_modules 最好的办法是先打包成 node_modules.7z

#21 打包也需要费时间吧,如何打包更快一些?

#22 不压缩纯打包其实还好

最讨厌的两个东西:node_moduels 和 .DS_Store ,都是硬盘毒瘤


打包称 tar 速度很快,但是可能会解压好几个小时

小文件需要 FastCopy 救一下

win 用 rd /q/s dir 比右键删除快

直接删了重新 yarn i

懂了,以后把 node_modules 打包成 vhdx 然后挂载到对应的目录

在 Windows 上移动/删除大量小文件,推荐用这款软件,UI 很古老但很好用
https://fastcopy.jp/

#28 在 Windows 上,删除大量小文件也很慢的,在正式删除前,需要先检索每一个文件

不知道有没有文件系统,可以根据目录名称直接将 目录映射到某些个磁盘。这样以后不用时直接格式化清空拉倒

1 行代码也要引一个包,结果这行代码更新出了问题,炸了好大一片网站。。。这事前年发生的真事

等等,你不用 git 的吗

用 deno 啊,哈哈哈。

NTFS 就可以吧

恭喜你遇到了一个大家一直都很绝望的问题。。

记得以后别整体移,进项目文件夹排掉 node_modules 以后再批量移。

这时候 pnpm 这种软硬连接的方式就很方便移动源码了,毕竟依赖都统一存放在 store

移动这个还不如删掉重新 install,文件多还小,win 下就是噩梦

用了 pnpm 之后不再被 node_modules 烦了,目前感觉还行

至少装的快,让我装 java jar 包 maven 慢的我要抓狂

在Node.js项目中,node_modules目录包含项目依赖的所有npm包,这些包通常会拆分成很多小文件,以便更好地管理和复用代码。虽然这确实会导致node_modules目录包含大量文件,但这是现代JavaScript模块化开发的一个必然结果。

如果你发现node_modules中的文件数量过多,影响了项目的构建速度或者管理效率,可以考虑以下几种优化方法:

  1. 使用pnpm代替npmyarnpnpm采用了一种称为“硬链接”的技术,可以显著减少node_modules中的文件数量,同时保持与npmyarn相同的依赖解析行为。

    npm install -g pnpm
    pnpm init # 或者 pnpm install <package>
    
  2. 清理未使用的依赖: 定期清理项目中未使用的依赖,可以减少node_modules中的文件数量。

    npm prune
    
  3. 使用monorepo结构: 如果你的项目包含多个子项目或模块,可以考虑使用monorepo结构,这样可以在一个仓库中管理多个项目,同时共享一些依赖,从而减少总的文件数量。

  4. 升级依赖: 有时候,依赖包的开发者会优化包的体积,因此定期升级依赖也可以减少文件数量。

总之,虽然node_modules中的文件数量可能看起来很多,但通过合理的工具选择和依赖管理,你可以有效地控制和管理这些文件。

回到顶部