Have ideas to improve npm?Join in the discussion! »

    npm-delegate

    0.2.0 • Public • Published

    npm-delegate

    A hierarchical npm-registry proxy to make private registries easier

    npm registries all the way down.

    wherefore?

    Say you want to set up a local, private npm registry for certain modules, but you still want to be able to install public modules. Sure, thanks to couchdb, you could replicate the entire public registry down - but that's hundreds of gigabytes of extra disk space you'd need.

                              +--+
    +------------+            |p |
    | client     |   'foo'?   |r |          +------------+
    |            |  --------> |o |  'foo'?  |            |
    |            |            |x |  ------> | private    |
    |            |            |y | <------  | registry   |
    |            |            |  |    404   +------------+
    |            |            |  |
    |            |            |  |          'foo'?     +---------------+
    |            |            |  |  -----------------> |               |
    |            |            |  | <-----------------  |  public       |
    |            | <--------  |  |         'foo'       |  registry     |
    +------------+    'foo'   +--+                     +---------------+
    

    Install

    npm install -g npm-delegate

    Usage

    Run npm-delegate somewhere - possibly on the server where you're running couchdb for your registry.

    npm-delegate registry1 registry2 registry3
    

    eg

    npm-delegate -p 1337 http://localhost:5984/registry https://registry.npmjs.org
    

    setup your npm client:

    npm do-some-stuff --registry http://your-delegate-host:1337
    

    List as many registries as you want in fall-back order as command line arguments when starting npm-delegate.

    note: proxy is read-only

    Only GET requests are allowed. Strange things happens when you send state-changing requests around willy-nilly, and that's probably not what you want. For example, to publish a module, you probably want to specify which registry you're publishing it to, eg

    $ npm publish --registry http://mysweetregistry.com
    

    See also: how to specify a registry to publish to in your package.json

    faqs

    does this run a registry for me?

    no

    how do I set up my own private registry?

    read this: https://github.com/isaacs/npmjs.org

    What is it doing?

    Turn on more logging with NODE_DEBUG environment variable:

     NODE_DEBUG="npm-delegate,request" npm-delegate http://registry.npmjs.org http://internal/registry
    

    It complains about https certificates!

    Turn off strict SSL checking:

     npm-delegate --no-strictssl https://registry.npmjs.org http://internal/registry
    

    I'm behind a corporate proxy - help!

    Calm down:

     npm-delegate --proxy http://corp:8080 http://registry.npmjs.org http://internal/registry
    

    It will also pick up proxy settings from http_proxy environment variable if set.

    contributors

    license

    MIT (c) 2012 jden - Jason Denizac jason@denizac.org http://jden.mit-license.org/2012

    Install

    npm i npm-delegate

    DownloadsWeekly Downloads

    0

    Version

    0.2.0

    License

    MIT

    Last publish

    Collaborators