你们家的 nodejs, node_modules 太占空间了。。。。

2018-05-10 10:36:19 +08:00
 wlwood
突然发现空间不够用了。。。
https://s1.imgs.cc/img/aaaaaROv3.png?_w=750

然后,写个脚本,把 node_modules 干掉后

https://s1.imgs.cc/img/aaaaaROvG.png?_w=750

瞬间有磁盘了😕😕😕
24407 次点击
所在节点    Node.js
71 条回复
linxl
2018-05-10 10:40:04 +08:00
也就上百兆吧 哈哈哈
owenliang
2018-05-10 10:41:21 +08:00
的确残暴
xinhangliu
2018-05-10 10:42:31 +08:00
而且文件目录超级多,真的爱不起来。
wlwood
2018-05-10 10:47:31 +08:00
janxin
2018-05-10 10:49:35 +08:00
你没理解我们 Node 社区 DRY 的真谛
wlwood
2018-05-10 10:58:48 +08:00
@janxin 额,Node 不同项目如何 DRY 呢?安装包的时候都是 install -g 么?
wlwood
2018-05-10 11:08:05 +08:00
话说,node 如何共享 node_modules 呢?像 python 那样 site-packages,或者 Go 那样, 共享 github.com 也行呀😄😄😄
janxin
2018-05-10 11:08:15 +08:00
并不能
@wlwood
wlwood
2018-05-10 11:36:31 +08:00
所以,所以,一个遍历删除 node_modules 目录脚本是不是就有必要了?



···python
#!/usr/bin/env python
# encoding:utf-8


import os
import sys
import shutil

def rm_dir(path, dirname):
if dirname == "node_modules":
print ("rm: ", os.path.join(path, dirname))
try:
shutil.rmtree(os.path.join(path, dirname))
except Exception as e:
print ("rm error: ", str(e))

def rm_node_modules(root):
for path, dirname, fs in os.walk(root):
for dirn in dirname:
rm_dir(path, dirn)

def main():
if len(sys.argv) < 2:
print ('please input node_modules path! exit !')
sys.exit(-1)

path = sys.argv[1]
print (path)
rm_node_modules(path)

if __name__ == "__main__":
main()
```


(注意的是,不要去删除 公共的 node_modules 啊,否则 npm 可能也会丢了)
iwillhappy1314
2018-05-10 11:52:25 +08:00
可以通过 link 的方式共享
hcj4xhu0jerome
2018-05-10 12:20:57 +08:00
vjnjc
2018-05-10 12:34:36 +08:00
我的 maven 缓存也有 1GB 了。。。下了不少包
buf1024
2018-05-10 14:42:47 +08:00
@wlwood 我只能说,一行命令就能解决你辛苦写的那么长一段代码的问题……

find . -name "node_modules" -print | xargs rm -rf
shynome
2018-05-10 14:54:17 +08:00
试试 npm i --production , 只安装生产依赖
orzfly
2018-05-10 15:23:54 +08:00
@buf1024 一个参数 -delete 就能解决的问题,至于调用 xargs 和 rm 嘛(跑

find . -name "node_modules" -delete
vinsony
2018-05-10 15:31:10 +08:00
我把所有依赖的 js 都打包成一个 js 文件,才几 M
wlwood
2018-05-10 15:31:14 +08:00
@buf1024 @orzfly 大神,膜拜。😄😄😄
wlwood
2018-05-10 15:37:47 +08:00
@shynome @vinsony 尽管你们说的都是方法,但是,开发时候,还是没有办法让不同的项目,使用相同的 node_modules 呀
vinsony
2018-05-10 15:47:34 +08:00
@wlwood 不同的项目使用相同的 node_modules ?只怕是项目多了人都要疯
wlwood
2018-05-10 15:52:32 +08:00
@vinsony 对呀,像其他语言就可以啊。使用相同的库,像 python,可以使用相同的 site-packages

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX