V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xubingok
V2EX  ›  程序员

npm install 遇上 git 源如何提速?

  •  
  •   xubingok · 121 天前 · 1857 次点击
    这是一个创建于 121 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个叫 jspdf 的库,其 package.json 里面是这样描述的:

      "dependencies": {
        "canvg": "1.5.3",
        "file-saver": "github:eligrey/FileSaver.js#1.3.8",
        "html2canvas": "1.0.0-alpha.12",
        "omggif": "1.0.7",
        "promise-polyfill": "8.1.0",
        "stackblur-canvas": "2.2.0"
      }
    

    问题就出在这个 file-saver.由于是从 github 拉取的,导致每次打包时 install 变得极慢,且不小的概率失败.

    网上常用的 npm --registry https://registry.npmmirror.com无效的,并不能改变这种指定 git 源的下载.

    有想过使用 file 协议 url 来替换.

    "dependencies": {
        "file-saver": "file:./file-saver"
    }
    

    但是这个库并不是项目 package.json 的直接依赖,而是 jspdf 导致的间接依赖,似乎也无法奏效.

    大佬们有没有什么好方法?这种依赖为 github 源且非直接依赖的,能否指定其使用别的方式下载?

    26 条回复    2022-10-09 19:29:06 +08:00
    leisure
        1
    leisure  
       121 天前
    额,终端中设置 proxy ? 我用 zsh ,现在习惯设置代理后体验还不错
    HugoChao
        2
    HugoChao  
       121 天前
    1.手动下载丢目录里
    2.手机热点+代理下载,大部分情况下速度很快,测试环境:南京联通 4G
    xubingok
        3
    xubingok  
    OP
       121 天前
    @leisure 自己电脑倒是好解决.但是打包服务器上用 proxy 不太合适~~~
    xubingok
        4
    xubingok  
    OP
       121 天前
    十分钟过了没法编辑了....

    因为打包服务器网络条件比较简陋,不考虑代理哈不考虑代理~~~
    kongkx
        5
    kongkx  
       121 天前 via iPhone
    打包服务器上也做个代理呗。
    interim
        7
    interim  
       121 天前   ❤️ 1
    用 clash for windows 的 TUN 模式,用了之后再也没有关心过这些问题了。
    Opportunity
        8
    Opportunity  
       121 天前
    改用 yarn2 如何?现在也有好多把 node_modules 推到 git 上的实践了

    https://github.com/yarnpkg/berry/tree/master/.yarn/cache
    FreshOldMan
        9
    FreshOldMan  
       121 天前
    终端 proxy
    vivipure
        10
    vivipure  
       121 天前
    修改 package-lock.json, 把依赖改为本地,然后用 npm ci 下载依赖
    rain0002009
        11
    rain0002009  
       121 天前
    不然更新一下 jspdf 我刚装的 都没这个依赖了
    DingJZ
        12
    DingJZ  
       121 天前
    我在公司打包的 macmini 上也挂了梯子,体验一下就上去了
    renmu123
        13
    renmu123  
       121 天前
    2.5.1 确实没这个依赖了或者可以下载一份代码到本地
    sky857412
        14
    sky857412  
       121 天前
    以前公司直接搞个 node_modules 的压缩包一起提交,服务器上解压,然后再编译
    mritd
        15
    mritd  
       121 天前 via iPhone
    最好的办法就是弄好梯子环境,否则过两天你会发现有的包代码里写死的去 github 下载🫠
    hsfzxjy
        16
    hsfzxjy  
       121 天前 via Android
    proxychains4
    CEBBCAT
        17
    CEBBCAT  
       121 天前
    买一台香港打包机🤝
    xubingok
        18
    xubingok  
    OP
       120 天前
    感觉诸位大佬.昨天发现 package.json 的 resolutions 字段似乎能应对这个场景,但是用下来没有效果,可能是我写法不对,我再研究研究.
    demoshengxw
        19
    demoshengxw  
       120 天前 via iPhone
    @interim 这个是正解,git 和 pip 要不还要一个个去代理
    hellohy
        20
    hellohy  
       120 天前
    @xubingok npm 不支持 resolutions ,用 yarn
    TequilaSea
        21
    TequilaSea  
       120 天前
    我记得我遇到过一个类似的,但不确定对这个问题有没有效,我的解决办法是把 git 协议替换成 https 协议
    cy18
        22
    cy18  
       120 天前
    全局透明代理,设置好白名单或者黑名单,一劳永逸
    cnit
        23
    cnit  
       120 天前
    xubingok
        24
    xubingok  
    OP
       120 天前
    @hellohy 啊?真的么?我昨天搞了一个下午,看了 N 篇文章,都有提到 yarn.我一直以为这个 resolutions 是两者都支持的.支持需要高版本的 npm..
    xubingok
        25
    xubingok  
    OP
       120 天前
    已经使用 yarn 的 resolutions 解决...
    npm 的 resolutions 倒也不是不支持.只是需要先执行 npx npm-force-resolutions 修改 lock 文件,然后在 install.而且在写法上也没有 yarn 这么灵活,很难用.
    xubingok
        26
    xubingok  
    OP
       120 天前
    @TequilaSea 这招用处不大...仅对某些不支持 ssh 的环境有用,根本原因还是墙的问题.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   3232 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 12:01 · PVG 20:01 · LAX 04:01 · JFK 07:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.