From 149bae57747c0ecdf1709bd0f943a3bdbb43b790 Mon Sep 17 00:00:00 2001 From: fengT-T <2995207228@qq.com> Date: Sun, 6 Feb 2022 22:11:53 +0800 Subject: [PATCH] Fix: Set https proxy for npm cli install script --- cli/npm/install.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/cli/npm/install.js b/cli/npm/install.js index 8d170f33..2790b47d 100755 --- a/cli/npm/install.js +++ b/cli/npm/install.js @@ -2,6 +2,7 @@ const fs = require('fs'); const zlib = require('zlib'); +const http = require('http'); const https = require('https'); const packageJSON = require('./package.json'); @@ -64,7 +65,25 @@ file.on('finish', () => { // Follow redirects. function get(url, callback) { - https.get(url, response => { + const requestUrl = new URL(url) + let request = https + let requestConfig = requestUrl + const proxyEnv = process.env['HTTPS_PROXY'] || process.env['https_proxy'] + + if (proxyEnv) { + const proxyUrl = new URL(proxyEnv) + request = proxyUrl.protocol === 'https:' ? https : http + requestConfig = { + hostname: proxyUrl.hostname, + port: proxyUrl.port, + path: requestUrl.toString(), + headers: { + Host: requestUrl.hostname + } + } + } + + request.get(requestConfig, response => { if (response.statusCode === 301 || response.statusCode === 302) { get(response.headers.location, callback); } else {