• 请不要在回答技术问题时复制粘贴 AI 生成的内容
BruceXu
V2EX  ›  程序员

npm install 遇上 git 源如何提速?

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

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

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