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

2021-05-21 11:22:42 浏览数 (1)

简介

nnrm 即 new nrm。

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

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

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

Why new nrm - nnrm?

首先,我赞成重复造轮子是不好的行为。

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

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

此外因为经常需要在不同的机器上操作,所以我希望它足够简洁,安装迅速,并且我不想总是看到依赖的包已 deprecated 的提示(强迫症?)。这便是它诞生的原因。

Features

nnrm 相比 nrm 的改进之处:

  • 支持 yarn (yarn 与 npm 的 registry 是互相独立的)
  • 极小的依赖
    • 使用 node-fetch (289B) 替代 request (184.8KB) 进行测速 node-fetch vs axios vs request | npmtrends
    • 使用 execa (8.4KB) 替代 npm (455.4KB) 通过终端而非 node API 实现切换 execa vs npm | npmtrends
    • 使用 cac (3.6KB) 替代 commander (6.8KB) 实现简单的终端 cac vs commander | npmtrends
  • 异步地显示源测速结果
  • 彩色的输出结果
  • 每次修改后自动显示 registry 列表,并标记当前 registry

安装

代码语言:javascript复制
yarn global add nnrm
# npm install -g nnrm

使用

nnrm -h 查看帮助。

代码语言:javascript复制
Usage:
  $ nrm <command> [options]

Commands:
  ls                           List all the registries
  use [registry]               Change registry
  test                         Show response time for all registries
  add <registry> <url> [home]  Add a custom registry
  remove <registry>            Remove a custom registry

Options:
  -h, --help     Display this message
  -v, --version  Display version number

显示所有源

代码语言:javascript复制
nnrm ls
Default Registires
  • npm ——– https://registry.npmjs.org/
  • yarn ——- https://registry.yarnpkg.com/
  • taobao —– https://registry.npm.taobao.org/
  • tencent —- https://mirrors.cloud.tencent.com/npm/
  • npmMirror – https://skimdb.npmjs.com/registry/
  • github —– https://npm.pkg.github.com/

切换源

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

npm 可以使用 nnrmnrm 切换。

yarn 可以使用 nyrmyrm 切换。

代码语言:javascript复制
nnrm use taobao
# nrm use taobao
# yrm use npm

添加/删除自有源

代码语言:javascript复制
nnrm add example https://example.com
nnrm remove example

Q.E.D.

0 人点赞