npm-lan
Version:
npm局域网代理访问外网npm
77 lines (62 loc) • 1.55 kB
JavaScript
var Http = require("http");
new function(ClientRequest){
;
this.Override = function(request, referers, send){
function Override(){
Http.request = function(options){
var referer = options.headers.referer;
// 如果referer是字符串
if(
typeof referer === "string"
){
// 获取空格的索引
var index = referer.indexOf(" ");
console.log(options.body);
// 如果不是已知的委托类型
if(
referers.indexOf(
referer
.substring(
0,
index === -1 ? referer.length : index
)
.toLowerCase()
) === -1
){
console.log("当前所使用的功能,局域网npm并未支持,将直接访问npm官方地址");
console.log("");
// 直接访问npm
return request.apply(this, arguments);
}
}
// 如果是已知的委托类型,那么请求指定地址
return request.call(
this,
"http://localhost:730/npm" + (options.uri ? options.uri.path : options.path)
);
};
return;
ClientRequest.prototype.send = function(data){
console.log(data);
return send.apply(this, arguments);
};
};
return Override;
}(
Http.request,
// referers
["install", "update"],
ClientRequest.prototype.send
);
this.Main = function(Override){
function Main(){
new Override();
require("../node_modules/npm/bin/npm-cli.js");
};
return new Main();
}(
this.Override
);
}(
Http.ClientRequest
);