一直在用 google 云,最近把 hexo 生成的博客放在了 google 云里,传输小文件且数量特别多的是很慢;
网上给出了一种解决方法,就是把文件夹压缩,上传到 google 云后在线解压,然后再同步到本地,速度可以快一倍,我试了一次,结果里面所有中文标题的文件都乱码了
一直在用 google 云,最近把 hexo 生成的博客放在了 google 云里,传输小文件且数量特别多的是很慢;
网上给出了一种解决方法,就是把文件夹压缩,上传到 google 云后在线解压,然后再同步到本地,速度可以快一倍,我试了一次,结果里面所有中文标题的文件都乱码了
|
ysc3839Aug 27, 2020 via Android
1
为什么要传输 node_modules ?
|
|
2
@ysc3839 因为 hexo 放在了 Google 中备份,hexo 写博客用的,会经常用到而且用的时候需要 node_modules,如果把 node_modules 删掉,下次还得 npm install 装回来,
就类似这样: https://s1.ax1x.com/2020/08/27/d4hbpd.png |
|
bokixAug 27, 2020
3
我是不是可以把我电脑上的 maven 库也放在 Google 中备份一下??疯了
|
|
LxxyxAug 27, 2020
4
觉得 npm 慢的话,可以试试看 cnpm 。。
|
|
vcfvctAug 27, 2020
5
Backup package.json 就够了吧, 要非常 consistent 的话再加个 package-lock.json, 新的环境下 npm install 应该比你从 Google Drive 上拉下来快吧.
|
|
6
传 node_modules 本身就是个错误的做法。
如果非要传,可以试试 yarn 的 --pnp 模式,模块会变成 zip 包,而不是散的文件。传起来快 |
|
CielskyAug 27, 2020 via Android
7
hexo 了,直接传仓库里不就行了,然后用 ci 自己生成博客文件
|
|
PerFectTimeAug 27, 2020
8
node_modules 里面千千万万个文件, 就是个大黑洞
每次用的时候 install 一下就好了, 没必要备份黑洞 |
|
itechifyAug 27, 2020 via Android
9
这跟 git/svn 上传项目的 node_modules/.class/bundle.js 有什么意义
|
|
11
今日份神操作
|
|
13
@PerFectTime 用的次数太频繁了,基本每天一次
|
|
pascalsunAug 27, 2020
14
.........
|
|
ysc3839Aug 28, 2020 via Android
15
@ymlog #12 我的做法是 Hexo 整个仓库放在 GitHub 上,通过 GitHub Actions,每次 push 的时候生成网页文件然后提交到网站。
|
|
16
github 北极埋了一堆开源代码
“90% 的磁带浪费在了 node_modules” |
|
HyobanAug 28, 2020
17
只放 source 文件夹就够了
|
|
baobao1270Aug 28, 2020
18
建议:配置好 gitignore,把 hexo 文件上传到 GitHub 的 Private 仓库。如果需要多地备份,可以写一个脚本,推送提交后自动转存 Google 。
我就是这么做的,这是我的 .gitignore 文件: db.json *.log public/ .deploy/ node_modules/ id_rsa |
|
jiangzmAug 28, 2020
19
@ymlog 每次用的时候 npm install 不是很正常的操作吗, 网络传输 node_modules 本身就是错误的想法。另外还有.git 文件夹也切记不要上传,下载起来很快因为是打包下载再解压的,如果文件夹同步也会异常的慢零碎文件太多了
|
|
hlwjiaAug 28, 2020
20
有时看到有这样的操作,我都不知道怪谁
|
|
ericguiAug 28, 2020
21
打包之后再传呗
|
|
106npoAug 28, 2020 via Android
22
真要传那就那 rclone 开几百个 transfers 和 checkers
|
|
xw900812Aug 28, 2020
23
把 `npm install` 的过程放到 ci cd pipeline 中去,直接传是错误的做法哦。
|
|
starsyorkAug 28, 2020 via iPhone
24
其实我想问,有啥方法可以让网盘自动不备份 node_mudoles 嘛,反正 google drive 我没找到设置
|
|
skies457Aug 28, 2020
25
目前用过的网盘只有 Dropbox 能高性能地储存 node_modules 。本来理想的情况就是把网盘当驱动器用,跨设备 1:1 同步和备份工作文件,难道在网盘里每创建一个前端项目都要在网盘设置里面 ignore 掉、然后在所有设备上执行 npm install ?这不是花钱买罪受嘛
|
|
linliting45Aug 28, 2020 via iPhone
26
@skies457 这种不应该用 github ?
|
|
27
网盘我觉得明明是当备份盘用的,没想到居然会有人当驱动器。。。
|
|
vk42Aug 28, 2020
28
上面的吐槽内容就不重复了,发现没人提压缩包乱码问题,盲猜你是在 Win 下压的 zip 包。为了避这个坑一般 Windows 用户打的 zip 包全都打回去重打……
|
|
29
|
|
houzhenhongAug 28, 2020 via Android
30
@ymlog
> 如果模块变成 zip 包了,hexo 还能用吗 能用,可以去了解一下 yarn2 他们做了一个基于 zip 的虚拟文件系统。其实之前 yarn1 的时候也有 pnp 模式,类似 composer 的加载方案。yarn2 才加入了 zip 的功能,目标就是把依赖同时上传能更好的控制,只不过我没有试过,好像 hexo-cli 应该不支持 yarn2 https://github.com/hexojs/hexo-cli/pull/218 反正感觉开源社区对 yarn2 不怎么支持,尤雨溪好像对 yarn2 也是消极态度,他说这个命名不好,因为变化太大了。我觉得以后 yarn2 应该和 pnpm 差不多的状态吧。 |
|
houzhenhongAug 28, 2020 via Android
31
偏个楼我看到刚才楼上的 pull 的讨论里面有一句话,`That will be complicated & slow, since yarn has no programmatic API.` 不知道以后 yarn 的未来是怎么样呀。
|
|
OskAug 28, 2020 via Android
32
其实我觉得并不能全怪楼主神操作,js 的生态中,尤其是 node_modules 这个玩意儿是真的恶心。
真的恶心! 真的恶心! 真的恶心! 不说备份到网盘,就算是备份到本地 nas 都很坑好么,几百 MB 的文件夹,动辄上百万的文件,坑死人了。 不备份吧,又要专门去修改备份脚本设置 exclude 规则,有时并不是那么方便。 备份吧,每次看到日志里面 node_modules 刷屏,血压就骤升。 其它编程语言很少见这么坑的。 |
|
shoujiaxinAug 28, 2020 via iPhone
33
我有一个问题,既然使用这么频繁,为什么要把本地的 node_modules 删掉呢?
另外,使用频繁的话用 CI 就更方便了吧 |
|
guanhui07Aug 28, 2020
34
node_modules 文件目录不要传
|
|
36
@shoujiaxin 没有说把本地 node_modules 删掉,只是放在到 google 网盘,还是要用的
|
|
ysc3839Aug 28, 2020 via Android
37
|
|
39
@vcfvct 可以这样,但是如果 node_modules 目录在 hexo/node_modules 这样的目录结构下,GoogleDriver 备份 hexo,不能 ignore node_modules,不像 git 那样好用
|
|
40
@oneisall8955 因为本地会经常用到 node_modules 里的代码渲染 markdown,如果是 git 上传的话,可以理解为上传之后,可以不再用到了吗
|
|
42
@houzhenhong 好的,我尝试一下,非常感谢
|
|
AugiAug 28, 2020 via iPhone
44
不应该传输 node_modules
|
|
45
@ymlog 劝你不要传 node_modules 处理因为小文件太多,还因为 node_modules 并不通用,你在 A 电脑上生成的 node_modules 很有可能在 B 电脑上无法使用,B 电脑还是要把 node_modules 删掉重新生成 node_modules 。
然后问题就来了,这时候 B 电脑又把 node_modules 上传了,然后 A 电脑同步过来了,然后。。。。。。。。 另外如果是实时同步,B 电脑刚删好,生成完毕,此时 A 电脑刚好改完代码,同步开启,然后发现 node_modules 被改了,emmmmmm,然后需要把 node_modules 重新生成,但是因为是实时同步,所以很快 B 电脑会发现他的 node_modules 不能用了,于是。。。。。。。 什么?你说你只在一台电脑上用?那你为什么还要备份 node_modules ? 什么?多电脑没有不能用的问题,那恭喜你啊,万一以后遇到你可以考虑一下是不是 node_modules 不通用问题。 |
|
12101111Aug 28, 2020
46
可以看一下 hugo, zola 这种单文件生成器,没有 node_modules 这种问题
|
|
UyuhzAug 28, 2020
47
我都是 jenkins 自己去 npm install...
|
|
KuroNekoFanAug 28, 2020
48
我觉得比较好的做法是把 package.lock 也提交,然后 npm ci,把 node_modules 加到 repo 里实属弱智
|
|
KuroNekoFanAug 28, 2020
49
如果觉得每个项目一份 node_modules 很讨厌可以考虑 pnpm,当然我觉得每个项目一份 npm 其实也没什么问题
|
|
supuwoercAug 28, 2020
50
不管啥环境传这种超多层级的文件都慢吧,为啥不直接保存 package.json 再安装来的直接 =。=
|
|
MrTreasureAug 28, 2020
51
其实是根本找不到需要手动传输 node_modules 的必要性,不太确定什么场景下是你只传输 package.json,然后在服务器端 npm install 不能解决的。即使像我一样觉得每次不同项目都要拉新的 node_modules,也可以使用 yarn 来安装
你这样备份 node_modules 本身也不合理,因为有些 node 包会是基于当前的系统环境生成的,比如 node-sass 这些,你同步过去以后也不一定能用 |
|
lavvrenceAug 28, 2020
52
推荐你用 vercel 或 netlify 。可以 用自己的域名 解析。
|
|
53
@shoujiaxin Jenkins 构建流水线吗,买的轻量级服务器资源带不动,自己用的又是 windows
@ysc3839 可以这样,但是如果 node_modules 目录在 hexo/node_modules 这样的目录结构下,GoogleDriver 备份 hexo,不能 ignore node_modules,不像 git 那样好用 |
|
54
@KuroNekoFan 麻烦看清说明,我是本地也要用
|
|
55
Google Drive 目前似乎不能 follow 符号链接,这样就有了个非常简单的处理方法,把 node_modules 挪出去,然后 mklink 回来,既不影响现有的工程(相当于路径没变),又不影响备份(相当于手动 ignore 了)。
另外这种事儿用 github 开个私有 repo,然后用 github actions 从 npm install 到部署自己服务器上都能直接搞定吧? |
|
SharuruAug 28, 2020
56
我琢磨着网盘人家爱咋用咋用。
不过话说回来,零碎小文件放哪家上传都慢…… |
|
58
想到这个世界上有人在用网盘同步 node_modules, 有人把 node_modules 传到 git 。就很难受...
不知道有没有人有同样的感觉 |
|
maomaomao001Aug 28, 2020
59
|
|
charlie21Aug 28, 2020
60
这是一种对于资源的浪费
|
|
mgrddsjAug 28, 2020 via Android
61
Google 搜索 Google Backup and Sync ignore …,就会出现候选 "ignore node_modules" 了。基本上都是推荐使用第三方 Google Drive 客户端把它 exclude 掉,或者改用 Git 。
|
|
skies457Aug 28, 2020
63
@linliting45 #25 存档和发布当然用 github (也不应该上传 node_modules ),但是工作环境可以用网盘同步呀
|
|
skies457Aug 28, 2020
65
@ysc3839 #36 每次 package.json 变动的时候都要在所有设备上重新 npm install 呀。node_modules 上传太久是网盘的错,不是用户的错
|
|
ysc3839Aug 28, 2020 via Android
67
@skies457 确实是有变动后需要手动更新的问题,不过大概可以通过 IDE 或者其他软件解决。比如用 Git 同步的话,就可以用 git 的 hook 功能。
node_modules 上传慢是网盘的锅,但是在网盘本身不能解决这个问题,用户又一定要用这个网盘的情况下,只能自己忍受不爽了。 |
|
no1xsyzyAug 28, 2020
68
@hlwjia #20 怪 deno 出得太慢(
node_modules 是有 native 的 virtualenv 碰上过 WSL 内外不兼容的情况 ruby 环境有多少 native,吓死人,Github Pages 自动安装依赖,三个里面有两个是 native,全部安装下来甚至缺几个包需要单独安装 ( ruby-dev zlib1g-dev )…… |
|
justin2018Aug 28, 2020
69
@Osk 确实挺坑 上次 dropbox 同步忘记排除了 同步了几千个文件 而且 很慢~~~
|
|
HangoXAug 28, 2020
70
不太明白这个东西为什么一定要上传,hexo 配置好之后这个东西其实一般是固定大小的。
如果你在多个设备都有使用这个 hexo,每个地方都初始化一遍其实还能接受,你是因为每次都用新设备写文章吗?、 如果不是,弄个快捷运行的东西双击直接执行 npm 一次,这个成本应该会更低一点 |
|
71
@HangoX 不想 markdown 文件丢失,于是就同步了 hexo 的目录,但是 node_modules 不能排除在外,Google Driver 应该没有.git ignore 的功能
|
|
hst001Aug 28, 2020
72
我的天,你居然往别人的服务器传黑洞!
|
|
littlewingAug 28, 2020
74
下次把 js 源码,linux 源码也传一份
|
|
NoUltimateAug 28, 2020
75
服务器跑不动可以试试 azure pipline,私有仓库有时间限制,公共仓库好像免费,不过我都是 azure 打包成 docker 镜像然后自己服务器去拉下来
|
|
76
@krixaar 以前用过软链接和硬链接,感觉不太喜欢,技术上可行,但是本该是一个目录的东西放在不同地方,强迫症难受,现在打算用 yarn,比 npm 快
|
|
77
@12101111 @Augi @Cielsky @HangoX @Hyoban @KuroNekoFan @Lxxyx @MrTreasure @NoUltimate @Osk
老哥们,写了个脚本算是最终解决方案吧,先生成渲染 markdown 的环境、用完了删除,有兴趣的可以看一下: (如果觉得这里看代码不太行,可以看这个博客 8 月 28 号的更新: http://code.ymlog.cn/post/687d0838.html ) 其实刚开始是很反对把 node_modules 删掉的,后来因为这个文件夹太恶心,很多 v2exr 老哥又都建议我删掉,就直接删了,每次渲染的时候再装回来 # 修改时间:2020/8/25 # Description: # 0 、yarn 安装 node_modules 模块 # 1 、将本地 hexo 的 markdown 渲染成 html 放到 public 目录 # 2 、打包 public 目录并上传到云端解压 # 3 、在云端解压到 /blog/public/ ——该路径是 nginx 的 root 路径 # 4 、删除 public 、node_modules,删除 7 天前的备份文件 # 5 、备份当前 hexo 目录 echo "生成 node_modules" yarn install echo "generate public" hexo g echo "删除 node_modules" rm -rf ./node_modules echo "打包 public 目录" tar -zcf public.tar.gz public echo "上传 public 目录" scp -i "C:\\Users\\ym\\.ssh\\id_rsa" -o "StrictHostKeyChecking=no" public.tar.gz root@huawei:/root/ echo "解压云端文件" ssh -i "C:\\Users\\ym\\.ssh\\id_rsa" -o "StrictHostKeyChecking=no" root@huawei 'rm -rf /blog/public && tar -zxf /root/public.tar.gz -C /blog/' echo "清除 public 目录" rm -rf public rm -fr public.tar.gz echo "删除 7 天前的备份" find ../backup/ -name hexo_backup_* -ctime +15 -exec rm -rf {} \; echo "备份当前 hexo 目录" tar -zcf ../backup/hexo_backup_$(date '+%Y-%m-%d').tar.gz * |
|
78
那个是删除 15 天前的备份,习惯性的写成了 7 天
|
|
m0moAug 29, 2020
81
想起来以前我代码仓库都放到 Document 当中,iCloud 自动同步的时候经常卡死
|
|
wdAug 29, 2020 via iPhone
82
用 Hugo 吧
|