Создать прокси-сервер в реестре 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
Другие вопросы по тегам