Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markthree/dnrm
deno 实现的 nrm,每次切换源都在 100ms 内,速度超级快 | deno implementation of nrm, each switch source within 100ms, super fast
https://github.com/markthree/dnrm
deno npm nrm registry ts ultrafast
Last synced: 3 days ago
JSON representation
deno 实现的 nrm,每次切换源都在 100ms 内,速度超级快 | deno implementation of nrm, each switch source within 100ms, super fast
- Host: GitHub
- URL: https://github.com/markthree/dnrm
- Owner: markthree
- License: mit
- Created: 2023-05-02T11:57:55.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-27T07:18:27.000Z (3 months ago)
- Last Synced: 2025-01-01T18:09:41.505Z (10 days ago)
- Topics: deno, npm, nrm, registry, ts, ultrafast
- Language: TypeScript
- Homepage: https://deno.land/x/dnrm
- Size: 249 KB
- Stars: 68
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## README 🦉
简体中文 | [English](./README_EN.md)
## Bench
[npm 镜像源工具速度对比](https://graphy.app/view/1cf14605-7fd1-4a85-bed8-90e2a7e204ae?caption=true)
## Usage
### install
#### 1. 模块安装
```shell
deno install --allow-read --allow-sys --allow-write --allow-env --allow-net -rfn dnrm https://deno.land/x/dnrm/mod.ts
```如果你装了 [node](https://nodejs.org),却没有安装过
[deno](https://deno.com/runtime) 👇```shell
npx deno-npx install --allow-read --allow-write --allow-env --allow-net -rfn dnrm https://deno.land/x/dnrm/mod.ts
```在一些不想装 [deno](https://deno.com/runtime) 的临时场景下 👇
```shell
# 注意: 这种使用方式仍然很慢,因为加载 deno 垫片需要时间
npm i deno-nrm -g
```#### 2. 本地安装
1. 下载该项目到本地
2. 在项目根目录下执行命令
```shell
deno task install
```### cli
```shell
# 查看当前源
dnrm# 切换 taobao 源
dnrm use taobao# 查看所有源
dnrm ls# 测试所有源
dnrm test# 设置源在本地
dnrm use taobao --local# 查看帮助
dnrm -h# 查看版本号
dnrm -V
```
## 优化原理
1. 热路径查询
2. `deno` 的冷启动比 `node` 更快
3. 自动区分使用场景,按需解析参数,按需加载低频模块,按需设置配置文件
4. 针对 `registry`
配置使用正则快速获取和替换配置,不使用任何耗时的解析器,不需要序列化和反序列化
5. 直接针对配置文件进行配置替换,而不是调用子进程执行
`npm config set registry=...`,因为 `npm` 内部分支太多,这是卡的主要原因
## License
Made with [markthree](https://github.com/markthree)
Published under [MIT License](./LICENSE).