V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
YunYouJun
V2EX  ›  分享创造

nnrm - 一个极简的 npm/yarn registry 切换管理器

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

    nnrm 是什么

    一个简单的 npm/yarn registry (镜像源)切换工具

    Github: https://github.com/YunYouJun/nnrm

    Why new nrm - nnrm?

    npm 用户常常因为国内环境需要在 npm 的官方镜像与国内加速镜像间切换。譬如,(没有代理的情况下)本地安装一些依赖包可以使用淘宝镜像,而发布包的时候则要切换至 npm 。

    nrm 使得切换更加方便,我们可以简单地使用 nrm use taobao 的方式切换镜像。但是在切换镜像前,安装 nrm 本身也是一件很慢的事情,nrm 依赖了已 deprecated 的且包体较大的 request,以及 npm 包,以及一些其他依赖。

    而我自身至今使用过的实际只有 nrm lsnrm use 命令而已。(偶尔可能尝试一下 nrm test 进行测速)。

    Features

    nnrm 相比 nrm 的改进之处,极小的依赖。以及支持 yarn 。( yarn 与 npm 的 registry 是互相独立的。)

    安装

    yarn global add nnrm
    # npm install -g nnrm
    

    使用

    切换源

    nnrm 同时绑定了四个命令 nnrm nrm nyrm yrm

    npm 可以使用 nnrmnrm 切换。

    yarn 可以使用 nyrmyrm 切换。

    nnrm use taobao
    # nrm use taobao
    

    6ZfEtI.png

    # 测速
    nnrm test
    

    6ZfAAA.png

    # 显示所有源
    nnrm ls
    
    16 条回复    2021-03-05 17:53:30 +08:00
    imzcg2
        1
    imzcg2   49 天前 via Android
    有没有可能添加自定义源
    hxsf
        2
    hxsf   48 天前 via iPhone
    可以定义 publishConfig 啊
    yazoox
        3
    yazoox   48 天前   ❤️ 1
    这个可以有!有空试试
    xiangchen2011
        4
    xiangchen2011   48 天前   ❤️ 1
    不错,感觉比 nrm 好用
    Cbdy
        5
    Cbdy   48 天前 via Android
    蛮怪的,设置几个 alias 不就可以了吗?
    chouchoui
        6
    chouchoui   48 天前
    @imzcg2 安装目录下面有个 registries.json,试了一下编辑有效
    MyFaith
        7
    MyFaith   48 天前
    nrm 和 yrm 的结合体
    YunYouJun
        8
    YunYouJun   48 天前
    @Cbdy 本身目的的话便是为了省去输入较长的命令或者配置 alias 的麻烦,场景比如,给实验室的某台机器 /学弟学妹切个源,安装一个几 K 的包,很明显比专门再去为每台机器配置 alias 要方便的多。以及保存了几个常用的 registry 。(以及测速总不能挨个 ping 一遍吧)
    ezreal
        9
    ezreal   48 天前
    和 cgr 有什么差别 https://www.npmjs.com/package/cgr
    YunYouJun
        10
    YunYouJun   48 天前
    @hxsf hhh 我觉得这和,我感觉身子冷,出去跑跑还是打开空调的选择差不多。
    YunYouJun
        11
    YunYouJun   48 天前
    @ezreal 区别就是我并不知道有 cgr 这个东西。其次就是我想要替代掉 deprecated 的 request 。具体区别也写在了 Features 里。(反倒是 cgr 与 nrm 有和区别?)
    hxsf
        12
    hxsf   48 天前
    @YunYouJun #10

    > npm 用户常常因为国内环境需要在 npm 的官方镜像与国内加速镜像间切换。譬如,(没有代理的情况下)本地安装一些依赖包可以使用淘宝镜像,而发布包的时候则要切换至 npm 。

    对此我提出可以配置 publishConfig.regsitry 而已,一劳永逸,不需要因为发布包而切换。直接用一个镜像站就行了。

    而国内几家镜像站差距不大,平时也不会来回切换。

    而且在有 lock 的情况下,切换源并不会有影响。
    abersheeran
        13
    abersheeran   48 天前
    不是很懂哈。直接给 npm 配置代理不就好了吗?
    YunYouJun
        14
    YunYouJun   48 天前
    @hxsf
    @abersheeran

    举的一个例子,可能不是很恰当。换一个例子。
    我需要给实验室(国内)的机器部署 node 的相关项目,首先我自行给其配代理不合适,其次部署项目时可能偶尔有一些自己新发的包,而国内的镜像更新必然有延迟,这时我可能需要临时切换到 npm 来获取最新的版本,而日常则继续默认切换回国内镜像。
    YunYouJun
        15
    YunYouJun   48 天前
    @hxsf (实质我自己本地一直用的 npm 官方镜像,有魔法所以没有这个烦恼。但是经常要帮师弟师妹同学们调试,或者管一些其他服务器,所有就写了这个脚本以备方便一些。)所以应该属于面向不同需求。
    YunYouJun
        16
    YunYouJun   48 天前
    @imzcg2
    @chouchoui

    整好了,加了 `nnrm add example https://example.com` 和 `nnrm remove example` 自定义源的方式。
    自定义源时,会默认新建文件 `~/.nnrm/registries.json` 来记录,因此不影响升级。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1271 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:37 · PVG 07:37 · LAX 16:37 · JFK 19:37
    ♥ Do have faith in what you're doing.