很多开发者会遇到这样的换工情况,Node安装包的推荐时候,国内镜像源有些包安装不上,镜具需要更换为淘宝镜像源,像切而有些包在淘宝镜像源又下载不到,换工导致需要每次重新设置镜像源,推荐以至于下次都不知道当前使用的镜具哪个镜像源故该管理工具出现,极大便利了我们的像切开发
nrm 是换工 Node.js 的镜像管理小工具,可以方便地查看镜像源列表和管理这些镜像源,推荐并且可以快速地切换到最适合当前网络环境的镜具镜像源。
全局安装 npm i nrm -g。
「查看」当前可用的镜像源列表:nrm ls。
「切换」镜像源 :nrm use <registry> 或 nrm use <url>。
「添加」新的镜像源:nrm add <registry> <url>。
「删除」镜像源 :nrm del <registry>。
「测试」镜像源速度:nrm test。
「显示」当前使用的镜像源:nrm current。
打开指定镜像源的「网站首页」:nrm home <registry>。
显示 nrm 命令的「帮助信息」:nrm help。
nrm ls 报错如下:
原因:由于 nrm 的依赖模块 open 采用的是 ES Module 的方式,但是 nrm 自身是一个 CommonJS 模块,无法直接加载 ES Module 的依赖。
解决:先注释掉报错文件的第9行(按照路径查找文件,如果使用的编辑器终端可以用 ctrl + 鼠标左键 点击报错文件直接跳转),再将 require('open') 改为 import('open'),具体修改如下:
// 找到 onHome 函数并修改
// 源代码
function onHome (name, browser) {
var allRegistries = getAllRegistry();
var home = allRegistries[name] && allRegistries[name].home;
if (home) {
var args = [home];
if (browser) args.push(browser);
open.apply(null, args);
}
}
// 修改为
function onHome(name, browser) {
var allRegistries = getAllRegistry();
var home = allRegistries[name] && allRegistries[name].home;
if (home) {
var args = [home];
if (browser) args.push(browser);
import('open')
.then((module) => {
var open = module.default;
open(...args);
})
.catch((error) => {
console.error(error);
});
}
}
nrm ls 显示镜像源列表后,当前源的前面不带* 号。
// 源代码
config(attrs, registry).then(() => {
console.log(' ');
const newR = npm.config.get(FIELD_REGISTRY);
var customRegistries = getCustomRegistry();
Object.keys(customRegistries).forEach(key => {
delete customRegistries[key][FIELD_IS_CURRENT];
});
if (hasOwnProperty(customRegistries, name) && (name in registries || customRegistries[name].registry === registry.registry)) {
registry[FIELD_IS_CURRENT] = true;
customRegistries[name] = registry;
}
setCustomRegistry(customRegistries);
printMsg(['', ' Registry has been set to: ' + newR, '']);
}).catch(err => {
exit(err);
})
// 修改后
config(attrs, registry).then(() => {
console.log(' ');
const newR = npm.config.get(FIELD_REGISTRY);
var customRegistries = getCustomRegistry();
Object.keys(customRegistries).forEach(key => {
delete customRegistries[key][FIELD_IS_CURRENT];
});
if (hasOwnProperty(customRegistries, name) || (name in registries || customRegistries[name].registry === registry.registry)) {
registry[FIELD_IS_CURRENT] = true;
customRegistries[name] = registry;
}
setCustomRegistry(customRegistries);
printMsg(['', ' Registry has been set to: ' + newR, '']);
}).catch(err => {
exit(err);
})
(责任编辑:探索)
银保监会:前10个月房地产合理贷款需求得到满足 信贷结构持续优化
人民时评:人无信不立,业无信不兴 让信用成为市场经济“硬通货”
海关总署:前10个月民营企业进出口15.31万亿元 占外贸总值的48.3%
住建部联手央行 监测重点房企资金出台融资管理规则 突出强化管理
四川巴中恩阳机场新增航线直通18个城市 去年旅客吞吐量38.2万人次
统计局:前7月全国房地产开发投资同比增长10.6% 增速有所回落