Создать прокси-сервер в реестре NPM
Я пытаюсь создать свою собственную версию local-npm
У меня есть этот простой http-сервер:
#!/usr/bin/env node
'use strict';
import http = require('http');
const s = http.createServer(function (clientRequest, clientResponse) {
if (clientRequest.url === 'x') {
clientResponse.write('retrieve the tarball from local fs');
clientResponse.end();
return;
}
const proxy = http.request({
hostname: 'https://registry.npmjs.org',
port: 80,
path: clientRequest.url,
method: clientRequest.method
},
function (res) {
res.pipe(clientResponse);
});
clientRequest.pipe(proxy);
});
s.listen(3441);
В местном терминале я запускаю:
npm config set registry "localhost:3441"
и просто для удовольствия я запускаю это тоже:
npm set registry "localhost:3441"
и чтобы подтвердить, что это работает, я делаю:
$(npm get registry) => "localhost:3441"
но потом, когда я бегу npm install
, прокси ничего не перехватывает, все просто идет в NPM.
Что я делаю неправильно?
1 ответ
Так что настройка реестра немного отличается от прокси.
Настройка реестра запросит пакет из установленного реестра; если задано значение по умолчанию, npm registry будет получать запрос, однако, если задано что-то еще, он получит запрос.
Кроме того, настройка прокси позволит получить доступ к заданному реестру через определенный домен. Это то, что я должен установить на работе, чтобы npm работал.
npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080
Настройка реестра почти такая же.
npm config set registry http://localhost:3441