MCPcopy Index your code
hub / github.com/YunYouJun/nnrm

github.com/YunYouJun/nnrm @v0.4.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.4 ↗ · + Follow
19 symbols 66 edges 12 files 2 documented · 11% updated 17mo agov0.4.4 · 2024-01-27★ 1391 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

nnrm

English Docs | 中文文档

npm GitHub code size in bytes node-current npm Libraries.io dependency status for latest release Snyk Vulnerabilities for npm scoped package

nnrm = new nrm

新的 npm 源管理器。

相比 nrm 使用了更小的依赖。

nnrm nrm
install size install size

由来

安装

# install
npm install -g nnrm
yarn global add nnrm
pnpm add -g nnrm

使用

以下命令是用来切换对应的包管理工具的源。

  • nnrm & nrm: npm
  • nyrm & yrm: yarn(v1-v3)
  • prm: pnpm
nnrm ls
# nrm ls
# yrm ls
# prm ls

nnrm use taobao
# nrm use taobao
# yrm use taobao
# prm use taobao

# 设置本地的 `.npmrc`
nrm use taobao -l

nnrm test
# nrm test
# yrm test
# prm test
  • nnrm -h: 显示帮助信息
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
Usage:
  $ nrm use [registry]

Options:
  -l, --local    set '.npmrc' for local

添加/删除自定义源

# 添加自定义源
nnrm add example https://xxx.com
# 移除自定义源
nrm remove example

它将会被记录在你的 ~/.nnrm/registries.json

默认源

Features

nnrm 相比 nrm 的改进之处:

  • 支持 yarn(v1-v3) (yarn 与 npm 的 registry 是互相独立的,pnpm 则与 npm 相同)
  • yarn(v3) 的配置字段使用 npmRegistryServer 替代了 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

FAQ

为什么要写新的 nrm?

nrm 依赖了已经弃用的 request 和包体较大的 npm,以及其他一些依赖。

所以在没有切换镜像源时,安装 nrm 是一件很慢的事情。

为什么使用 cac?

minimist vs commander vs cac | npm trends

minimist 仅仅 1.3 KB,但它只是一个参数解析工具。

我们需要一个可以自动生成帮助信息的工具。

commandercac 可以做到。

cac(3.6KB) 相比 commander(6.8KB) 更小。~~并且它的名字取自我喜爱的动漫人物 C.C.~~

为什么使用 node-fetch?

node-fetch vs axios vs request

node-fetch 大小仅仅 289B!

axios(4.6KB) 很棒,但是 node-fetch 更小。

request(184.8KB) 已经被弃用了,而且它是如此的大。

为什么使用 execa?

execa vs shelljs

execa 大小仅仅 8.4KB。

安装 npm 包来使用 npm.config.set('registry', 'xxx') 的代价是十分昂贵的。

我们只需要执行本地的命令: npm config set registry xxx

Windows 报错?

如果您是 Windows 用户,您可能需要确保你使用 bash 等类 UNIX 通用命令行(而非 CMD)。

参考

赞助者

Extension points exported contracts — how you extend this code

ProcessEnv (Interface)
(no doc)
src/shims.d.ts
Registry (Interface)
(no doc)
src/types.ts

Core symbols most depended-on inside this repo

getAllRegistries
called by 6
src/utils/index.ts
listRegistries
called by 5
src/utils/index.ts
getCustomRegistry
called by 3
src/utils/registries.ts
setCustomRegistry
called by 3
src/utils/registries.ts
getRegistriesList
called by 3
src/utils/index.ts
getCurrentRegistry
called by 3
src/utils/index.ts
main
called by 3
src/utils/index.ts
dashLine
called by 2
src/utils/common.ts

Shape

Function 17
Interface 2

Languages

TypeScript100%

Modules by API surface

src/utils/index.ts9 symbols
src/utils/registries.ts4 symbols
test/basic.test.ts2 symbols
src/utils/common.ts2 symbols
src/types.ts1 symbols
src/shims.d.ts1 symbols

For agents

$ claude mcp add nnrm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page