V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
BruceXu
V2EX  ›  程序员

npm install 遇上 git 源如何提速?

  •  
  •   BruceXu · Oct 8, 2022 · 3559 views
    This topic created in 1303 days ago, the information mentioned may be changed or developed.

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

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

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