npm只支持http代理,不支持socks代理,如果要让npm使用socks进行代理,可以使用中间件将http代理转发给socks代理。这里使用nodejs环境上的一种将socks proxy转换成http proxy的工具http-proxy-to-socks。
安装http-proxy-to-socks
项目地址:https://github.com/oyyd/http-proxy-to-socks
提示:需要node版本为4及以上。
npm install -g http-proxy-to-socks
配置http-proxy-to-socks
提示: 为方便命令的输入,可将安装后的npm全局包路径加入系统环境变量
于shell中键入命令
hpts -s 127.0.0.1:1080 -p 1234
该命令会开启监听1234端口的http proxy,并遵循socks协议将请求发送到1080端口。请确保本地socks服务开启在相应的端口上以及待监听的端口未被占用。
所有配置项如下:
Options:
-h, --help output usage information
-V, --version output the version number
-s, --socks [socks] specify your socks proxy host, default: 127.0.0.1:1080
-p, --port [port] specify the listening port of http proxy server, default: 8080
-c, --config [config] read configs from file in json format
--level [level] log level, vals: info, error
配置npm代理
npm config set proxy=http://127.0.0.1:1234
npm config set https-proxy=http://127.0.0.1:1234
配置npm的http代理为刚才配置的本地http代理,这样npm发起的http请求便可通过http代理转发给socks代理来进行访问
其它
可以将命令写入bat 脚本中方便使用。如果使用vscode等开发工具,还可以将命令配置成任务方便使用。
以vscode为例
在项目.vscode文件夹里新建tasks.json文件并配置即可
{
"version": "2.0.0",
"tasks": [
{
"label": "hpts",
"type": "shell",
"command": "hpts -s 127.0.0.1:1234 -p 8080",
"problemMatcher": []
}
]
}