V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xubingok
V2EX  ›  程序员

npm install 遇上 git 源如何提速?

  •  
  •   xubingok · 2022-10-08 15:22:36 +08:00 · 2898 次点击
    这是一个创建于 808 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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