diff --git a/README.md b/README.md index 0a38ee4..1cb517e 100644 --- a/README.md +++ b/README.md @@ -42,3 +42,9 @@ I believe all the above said tools will be available in a typical UNIX machine. # Configurations Please check config.js. All config values can be over-written by `environment-variables` + +# Using npm-offline-registry as a completely isolated registry + +If you set the ``ENABLE_NPM_FAILOVER`` config value to ``false`` then npm-offlin-registry will not attempt to +contact the upstream NPM registry for unknown packages and instead return a 404 response, meaning you can use +it as an alternative to the NPM registry behind a firewall / isolated from the internet. diff --git a/app.js b/app.js index df8b2d2..3885808 100644 --- a/app.js +++ b/app.js @@ -4,6 +4,7 @@ var utils = require( __dirname + '/./utils'); var NPM_PATH = config.NPM_PATH; var REGISTRY_NAME = config.REGISTRY_NAME; +var ENABLE_NPM_FAILOVER = config.ENABLE_NPM_FAILOVER; var fetchAndCacheMetadata = utils.fetchAndCacheMetadata; @@ -36,8 +37,12 @@ app.get( '/:package', function( req, res, next ){ return fileExists( cacheFile ) .tap( function( isExists ){ if( !isExists ){ - res._log.cacheHit = '---'; - return fetchAndCacheMetadata( packageName, cacheFile ); + if ( ENABLE_NPM_FAILOVER ) { + res._log.cacheHit = '---'; + return fetchAndCacheMetadata( packageName, cacheFile ); + } else { + return res.status( 404 ).json( {} ); + } } }) .then( function( ){ @@ -60,8 +65,12 @@ app.get( '/:package/-/:tarball', function( req, res, next ){ fileExists( packagePath ) .tap( function( isExists ){ if( !isExists ){ - res._log.cacheHit = '---'; - return fetchAndCacheTarball( packageName, version, packagePath ); + if ( ENABLE_NPM_FAILOVER ) { + res._log.cacheHit = '---'; + return fetchAndCacheTarball( packageName, version, packagePath ); + } else { + return res.status( 404 ).json( {} ); + } } }) .then( function(){ diff --git a/config.js b/config.js index 0c153cd..95c98ff 100644 --- a/config.js +++ b/config.js @@ -2,7 +2,8 @@ var defaultConfig = { NPM_PATH : process.env.HOME + '/.npm', REGISTRY_NAME : 'registry.npmjs.org', - PORT: 8234 + PORT: 8234, + ENABLE_NPM_FAILOVER: true }; var config = {};