nrm 介绍
nrm 是一个 npm 源管理器,可以快速地切换 npm 源。在使用 nrm 之前,我们通常使用命令的方式来设置 npm 源:
npm config set registry https://registry.npmmirror.com/
在某些公司,可能还会有自己的私有源,来回切换源挺麻烦的,所以我们可以考虑安装 nrm,使用 nrm 来管理 npm 的源。
nrm 使用
安装
全局安装:
npm i -g nrm
如果是 Mac 或者 Linux 系统可能会出现无目录权限的问题,修改对应的目录权限所属用户为当前用户即可:
sudo chown -R $USER /usr/local/lib/node_modules
查看所有可用源:
nrm ls
npm ---------- https://registry.npmjs.org/
yarn --------- https://registry.yarnpkg.com/
tencent ------ https://mirrors.cloud.tencent.com/npm/
cnpm --------- https://r.cnpmjs.org/
taobao ------- https://registry.npmmirror.com/
npmMirror ---- https://skimdb.npmjs.com/registry/
切换源
通过 nrm use <源名称>,则会配置为对应的 registry url。如使用 taobao 源:
nrm use taobao
添加和删除源
如果公司有自己的私有源,可以使用命令 nrm add <源名称> <源地址> 添加源,如:
nrm add demo http://192.168.0.100:8888/npm/demo/
使用 nrm ls 就可以看到刚才添加的源了。
使用命令 nrm del <源名称> 就可以删除源,如删除上一步添加的源:
nrm del demo
测试源响应速度
使用命令 nrm test <源名称> 可测试指定源的响应速度,如测试 taobao 源的速度:
nrm test npm
结果:
* taobao --- 264ms
nrm 还有其他的一些命令,这些常用的命令基本就够我们使用了,如果有特定的需求,可以去查阅官方文档。
异常处理
const open = require('open')
完整异常如下:
C:\Users\luwnto\AppData\Roaming\npm\node_modules\nrm\cli.js:9
const open = require('open');
^
Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\luwnto\AppData\Roaming\npm\node_modules\nrm\node_modules\open\index.js from C:\Users\luwnto\AppData\Roaming\npm\node_modules\nrm\cli.js not supported.
Instead change the require of index.js in C:\Users\luwnto\AppData\Roaming\npm\node_modules\nrm\cli.js to a dynamic import() which is available in all CommonJS modules.
at Object.<anonymous> (C:\Users\luwnto\AppData\Roaming\npm\node_modules\nrm\cli.js:9:14) {
code: 'ERR_REQUIRE_ESM'
}
Node.js v18.16.0
编辑这个文件,找到这一行,注释掉即可:
1 #!/usr/bin/env node
2
3 const path = require('path');
4 const fs = require('fs');
5 const program = require('commander');
6 const npm = require('npm');
7 const ini = require('ini');
8 const extend = require('extend');
9 // const open = require('open');
10 const async = require('async');