跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Google Driver 传输类似 node_modules 这样的文件太慢
未分類
31 8 月 2020

Google Driver 传输类似 node_modules 这样的文件太慢

Google Driver 传输类似 node_modules 这样的文件太慢

資深大佬 : ymlog 70

一直在用 google 云,最近把 hexo 生成的博客放在了 google 云里,传输小文件且数量特别多的是很慢;

网上给出了一种解决方法,就是把文件夹压缩,上传到 google 云后在线解压,然后再同步到本地,速度可以快一倍,我试了一次,结果里面所有中文标题的文件都乱码了

大佬有話說 (82)

  • 資深大佬 : ysc3839

    为什么要传输 node_modules ?

  • 主 資深大佬 : ymlog

    @ysc3839 因为 hexo 放在了 Google 中备份,hexo 写博客用的,会经常用到而且用的时候需要 node_modules,如果把 node_modules 删掉,下次还得 npm install 装回来,

    就类似这样: https://s1.ax1x.com/2020/08/27/d4hbpd.png

  • 資深大佬 : bokix

    我是不是可以把我电脑上的 maven 库也放在 Google 中备份一下??疯了

  • 資深大佬 : Lxxyx

    觉得 npm 慢的话,可以试试看 cnpm 。。

  • 資深大佬 : vcfvct

    Backup package.json 就够了吧, 要非常 consistent 的话再加个 package-lock.json, 新的环境下 npm install 应该比你从 Google Drive 上拉下来快吧.

  • 資深大佬 : zhuweiyou

    传 node_modules 本身就是个错误的做法。

    如果非要传,可以试试 yarn 的 –pnp 模式,模块会变成 zip 包,而不是散的文件。传起来快

  • 資深大佬 : Cielsky

    hexo 了,直接传仓库里不就行了,然后用 ci 自己生成博客文件

  • 資深大佬 : PerFectTime

    node_modules 里面千千万万个文件, 就是个大黑洞
    每次用的时候 install 一下就好了, 没必要备份黑洞

  • 資深大佬 : oneisall8955

    这跟 git/svn 上传项目的 node_modules/.class/bundle.js 有什么意义

  • 主 資深大佬 : ymlog

    @zhuweiyou 如果模块变成 zip 包了,hexo 还能用吗

  • 資深大佬 : masker

    今日份神操作

  • 主 資深大佬 : ymlog

    @Cielsky hexo 推送到仓库的只有 public 目录,我想把所有文件全部上云

  • 主 資深大佬 : ymlog

    @PerFectTime 用的次数太频繁了,基本每天一次

  • 資深大佬 : pascalsun

    ………

  • 資深大佬 : ysc3839

    @ymlog #12 我的做法是 Hexo 整个仓库放在 GitHub 上,通过 GitHub Actions,每次 push 的时候生成网页文件然后提交到网站。

  • 資深大佬 : noe132

    github 北极埋了一堆开源代码

    “90% 的磁带浪费在了 node_modules”

  • 資深大佬 : Hyoban

    只放 source 文件夹就够了

  • 資深大佬 : baobao1270

    建议:配置好 gitignore,把 hexo 文件上传到 GitHub 的 Private 仓库。如果需要多地备份,可以写一个脚本,推送提交后自动转存 Google 。

    我就是这么做的,这是我的 .gitignore 文件:
    db.json
    *.log
    public/
    .deploy/
    node_modules/
    id_rsa

  • 資深大佬 : jiangzm

    @ymlog 每次用的时候 npm install 不是很正常的操作吗, 网络传输 node_modules 本身就是错误的想法。另外还有.git 文件夹也切记不要上传,下载起来很快因为是打包下载再解压的,如果文件夹同步也会异常的慢零碎文件太多了

  • 資深大佬 : hlwjia

    有时看到有这样的操作,我都不知道怪谁

  • 資深大佬 : ericgui

    打包之后再传呗

  • 資深大佬 : xmumiffy

    真要传那就那 rclone 开几百个 transfers 和 checkers

  • 資深大佬 : xw900812

    把 `npm install` 的过程放到 ci cd pipeline 中去,直接传是错误的做法哦。

  • 資深大佬 : starsyork

    其实我想问,有啥方法可以让网盘自动不备份 node_mudoles 嘛,反正 google drive 我没找到设置

  • 資深大佬 : skies457

    目前用过的网盘只有 Dropbox 能高性能地储存 node_modules 。本来理想的情况就是把网盘当驱动器用,跨设备 1:1 同步和备份工作文件,难道在网盘里每创建一个前端项目都要在网盘设置里面 ignore 掉、然后在所有设备上执行 npm install ?这不是花钱买罪受嘛

  • 資深大佬 : linliting45

    @skies457 这种不应该用 github ?

  • 資深大佬 : lslqtz

    网盘我觉得明明是当备份盘用的,没想到居然会有人当驱动器。。。

  • 資深大佬 : vk42

    上面的吐槽内容就不重复了,发现没人提压缩包乱码问题,盲猜你是在 Win 下压的 zip 包。为了避这个坑一般 Windows 用户打的 zip 包全都打回去重打……

  • 資深大佬 : Rhinecho

    https://tva1.sinaimg.cn/large/006JgHnUly1gi64wu4c6tj31kw14gkjl.jpg

  • 資深大佬 : houzhenhong

    @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 差不多的状态吧。

  • 資深大佬 : houzhenhong

    偏个我看到刚才上的 pull 的讨论里面有一句话,`That will be complicated & slow, since yarn has no programmatic API.` 不知道以后 yarn 的未来是怎么样呀。

  • 資深大佬 : Osk

    其实我觉得并不能全怪主神操作,js 的生态中,尤其是 node_modules 这个玩意儿是真的恶心。

    真的恶心!
    真的恶心!
    真的恶心!

    不说备份到网盘,就算是备份到本地 nas 都很坑好么,几百 MB 的文件夹,动辄上百万的文件,坑死人了。
    不备份吧,又要专门去修改备份脚本设置 exclude 规则,有时并不是那么方便。
    备份吧,每次看到日志里面 node_modules 刷屏,血压就骤升。

    其它编程语言很少见这么坑的。

  • 資深大佬 : shoujiaxin

    我有一个问题,既然使用这么频繁,为什么要把本地的 node_modules 删掉呢?
    另外,使用频繁的话用 CI 就更方便了吧

  • 資深大佬 : guanhui07

    node_modules 文件目录不要传

  • 主 資深大佬 : ymlog

    @skies457 我也是这么想的,但是评论一帮人就让我不要传输 node_modules

  • 主 資深大佬 : ymlog

    @shoujiaxin 没有说把本地 node_modules 删掉,只是放在到 google 网盘,还是要用的

  • 資深大佬 : ysc3839

    @skies457 @ymlog
    “不传输 node_modules”不代表要把本地的 node_modules 删除呀。
    不传输 node_modules 的话,也只是在新设备上同步时需要安装一次,以后直接用就行了。
    这么做很好地解决了 node_modules 上传太慢的问题。在我看来,等 node_modules 上传半天才是受罪。

  • 主 資深大佬 : ymlog

    @ericgui 先打包成压缩包,然后在云端解压,最后同步到本地,可以让速度快一倍

  • 主 資深大佬 : ymlog

    @vcfvct 可以这样,但是如果 node_modules 目录在 hexo/node_modules 这样的目录结构下,GoogleDriver 备份 hexo,不能 ignore node_modules,不像 git 那样好用

  • 主 資深大佬 : ymlog

    @oneisall8955 因为本地会经常用到 node_modules 里的代码渲染 markdown,如果是 git 上传的话,可以理解为上传之后,可以不再用到了吗

  • 主 資深大佬 : ymlog

    @noe132 今日份黑色幽默

  • 主 資深大佬 : ymlog

    @houzhenhong 好的,我尝试一下,非常感谢

  • 主 資深大佬 : ymlog

    @Osk 确实是这样,这东西也太分散了

  • 資深大佬 : Augi

    不应该传输 node_modules

  • 資深大佬 : kekxv

    @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 不通用问题。

  • 資深大佬 : 12101111

    可以看一下 hugo, zola 这种单文件生成器,没有 node_modules 这种问题

  • 資深大佬 : Uyuhz

    我都是 jenkins 自己去 npm install…

  • 資深大佬 : KuroNekoFan

    我觉得比较好的做法是把 package.lock 也提交,然后 npm ci,把 node_modules 加到 repo 里实属弱智

  • 資深大佬 : KuroNekoFan

    如果觉得每个项目一份 node_modules 很讨厌可以考虑 pnpm,当然我觉得每个项目一份 npm 其实也没什么问题

  • 資深大佬 : supuwoerc

    不管啥环境传这种超多层级的文件都慢吧,为啥不直接保存 package.json 再安装来的直接 =。=

  • 資深大佬 : MrTreasure

    其实是根本找不到需要手动传输 node_modules 的必要性,不太确定什么场景下是你只传输 package.json,然后在服务器端 npm install 不能解决的。即使像我一样觉得每次不同项目都要拉新的 node_modules,也可以使用 yarn 来安装

    你这样备份 node_modules 本身也不合理,因为有些 node 包会是基于当前的系统环境生成的,比如 node-sass 这些,你同步过去以后也不一定能用

  • 資深大佬 : jaylee4869

    推荐你用 vercel 或 netlify 。可以 用自己的域名 解析。

  • 主 資深大佬 : ymlog

    @shoujiaxin Jenkins 构建流水线吗,买的轻量级服务器资源带不动,自己用的又是 windows
    @ysc3839 可以这样,但是如果 node_modules 目录在 hexo/node_modules 这样的目录结构下,GoogleDriver 备份 hexo,不能 ignore node_modules,不像 git 那样好用

  • 主 資深大佬 : ymlog

    @KuroNekoFan 麻烦看清说明,我是本地也要用

  • 資深大佬 : krixaar

    Google Drive 目前似乎不能 follow 符号链接,这样就有了个非常简单的处理方法,把 node_modules 挪出去,然后 mklink 回来,既不影响现有的工程(相当于路径没变),又不影响备份(相当于手动 ignore 了)。
    另外这种事儿用 github 开个私有 repo,然后用 github actions 从 npm install 到部署自己服务器上都能直接搞定吧?

  • 資深大佬 : Sharuru

    我琢磨着网盘人家爱咋用咋用。

    不过话说回来,零碎小文件放哪家上传都慢……

  • 資深大佬 : phxsuns

    @ymlog 系统环境不一样,node_modules 装出来也不一样的。保险起见还是需要 npm install 的。

  • 資深大佬 : vanxy

    想到这个世界上有人在用网盘同步 node_modules, 有人把 node_modules 传到 git 。就很难受…

    不知道有没有人有同样的感觉

  • 資深大佬 : maomaomao001

    @ymlog 用的时候解压

    传的时候 zip ,用的时候解压

  • 資深大佬 : charlie21

    这是一种对于资源的浪费

  • 資深大佬 : mgrddsj

    Google 搜索 Google Backup and Sync ignore …,就会出现候选 “ignore node_modules” 了。基本上都是推荐使用第三方 Google Drive 客户端把它 exclude 掉,或者改用 Git 。

  • 主 資深大佬 : ymlog

    @vanxy 我也知道可以 npm 安装,但是你不理解我的需求

  • 資深大佬 : skies457

    @linliting45 #25 存档和发布当然用 github (也不应该上传 node_modules ),但是工作环境可以用网盘同步呀

  • 資深大佬 : skies457

    @lslqtz #26 理想的话应该能从网盘直接启动系统,不要让产品的局限性阻碍了我们的想象力(逃

  • 資深大佬 : skies457

    @ysc3839 #36 每次 package.json 变动的时候都要在所有设备上重新 npm install 呀。node_modules 上传太久是网盘的错,不是用户的错

  • 資深大佬 : skies457

    @vanxy #57 我同步了至少 20 个(逃

  • 資深大佬 : ysc3839

    @skies457 确实是有变动后需要手动更新的问题,不过大概可以通过 IDE 或者其他软件解决。比如用 Git 同步的话,就可以用 git 的 hook 功能。
    node_modules 上传慢是网盘的锅,但是在网盘本身不能解决这个问题,用户又一定要用这个网盘的情况下,只能自己忍受不爽了。

  • 資深大佬 : no1xsyzy

    @hlwjia #20 怪 deno 出得太慢(

    node_modules 是有 native 的
    virtualenv 碰上过 WSL 内外不兼容的情况
    ruby 环境有多少 native,吓死人,Github Pages 自动安装依赖,三个里面有两个是 native,全部安装下来甚至缺几个包需要单独安装 ( ruby-dev zlib1g-dev )……

  • 資深大佬 : justin2018

    @Osk 确实挺坑 上次 dropbox 同步忘记排除了 同步了几千个文件 而且 很慢~~~

  • 資深大佬 : HangoX

    不太明白这个东西为什么一定要上传,hexo 配置好之后这个东西其实一般是固定大小的。
    如果你在多个设备都有使用这个 hexo,每个地方都初始化一遍其实还能接受,你是因为每次都用新设备写文章吗?、
    如果不是,弄个快捷运行的东西双击直接执行 npm 一次,这个成本应该会更低一点

  • 主 資深大佬 : ymlog

    @HangoX 不想 markdown 文件丢失,于是就同步了 hexo 的目录,但是 node_modules 不能排除在外,Google Driver 应该没有.git ignore 的功能

  • 資深大佬 : hst001

    我的天,你居然往别人的服务器传黑洞!

  • 資深大佬 : krixaar

    @ymlog 所以说你到底试没试 mklink ?

  • 資深大佬 : littlewing

    下次把 js 源码,linux 源码也传一份

  • 資深大佬 : NoUltimate

    服务器跑不动可以试试 azure pipline,私有仓库有时间限制,公共仓库好像免费,不过我都是 azure 打包成 docker 镜像然后自己服务器去拉下来

  • 主 資深大佬 : ymlog

    @krixaar 以前用过软链接和硬链接,感觉不太喜欢,技术上可行,但是本该是一个目录的东西放在不同地方,强迫症难受,现在打算用 yarn,比 npm 快

  • 主 資深大佬 : ymlog

    @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 [email protected]:/root/

    echo “解压云端文件”
    ssh -i “C:\Users\ym\.ssh\id_rsa” -o “StrictHostKeyChecking=no” [email protected] ‘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 *

  • 主 資深大佬 : ymlog

    那个是删除 15 天前的备份,习惯性的写成了 7 天

  • 主 資深大佬 : ymlog

    @hst001 今日份幽默,已经删了 node_modules 文件夹了,这玩意儿有毒

  • 主 資深大佬 : ymlog

    @kekxv 是的,很有道理,已经放弃传输 Node_modules 了

  • 資深大佬 : frantic

    想起来以前我代码仓库都放到 Document 当中,iCloud 自动同步的时候经常卡死

  • 資深大佬 : wd

    用 Hugo 吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具