fix(registry): be better at using the correct registry (relevant for npme)
Closes #53
This commit is contained in:
		
							parent
							
								
									23221cc044
								
							
						
					
					
						commit
						451378117d
					
				| @ -1,5 +1,6 @@ | ||||
| const { readFileSync, writeFileSync } = require('fs') | ||||
| const path = require('path') | ||||
| const url = require('url') | ||||
| 
 | ||||
| const _ = require('lodash') | ||||
| const log = require('npmlog') | ||||
| @ -45,11 +46,12 @@ npmconf.load({}, (err, conf) => { | ||||
|       token: env.NPM_TOKEN | ||||
|     }, | ||||
|     loglevel: conf.get('loglevel'), | ||||
|     registry: conf.get('registry'), | ||||
|     registry: require('./lib/get-registry')(pkg, conf), | ||||
|     tag: (pkg.publishConfig || {}).tag || conf.get('tag') || 'latest' | ||||
|   } | ||||
| 
 | ||||
|   if (npm.registry[npm.registry.length - 1] !== '/') npm.registry += '/' | ||||
|   // normalize trailing slash
 | ||||
|   npm.registry = url.format(url.parse(npm.registry)) | ||||
| 
 | ||||
|   log.level = npm.loglevel | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										12
									
								
								src/lib/get-registry.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/lib/get-registry.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| module.exports = function (pkg, conf) { | ||||
|   if (pkg.publishConfig && pkg.publishConfig.registry) return pkg.publishConfig.registry | ||||
| 
 | ||||
|   if (pkg.name[0] !== '@') return conf.get('registry') || 'https://registry.npmjs.org/' | ||||
| 
 | ||||
|   const scope = pkg.name.split('/')[0] | ||||
|   const scopedRegistry = conf.get(`${scope}/registry`) | ||||
| 
 | ||||
|   if (scopedRegistry) return scopedRegistry | ||||
| 
 | ||||
|   return conf.get('registry') || 'https://registry.npmjs.org/' | ||||
| } | ||||
							
								
								
									
										30
									
								
								test/specs/get-registry.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								test/specs/get-registry.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| const test = require('tap').test | ||||
| 
 | ||||
| const getRegistry = require('../../dist/lib/get-registry') | ||||
| 
 | ||||
| test('get correct registry', (t) => { | ||||
|   t.is(getRegistry({ | ||||
|     name: 'publish-config', | ||||
|     publishConfig: { | ||||
|       registry: 'a' | ||||
|     }}, | ||||
|   {}), 'a') | ||||
| 
 | ||||
|   t.is(getRegistry({name: 'normal'}, {get: () => 'b'}), 'b') | ||||
| 
 | ||||
|   t.is(getRegistry({name: 'normal'}, {get: () => null}), 'https://registry.npmjs.org/') | ||||
| 
 | ||||
|   t.is(getRegistry({name: '@scoped/foo'}, { | ||||
|     get: (input) => input === '@scoped/registry' ? 'c' : 'd' | ||||
|   }), 'c') | ||||
| 
 | ||||
|   t.is(getRegistry({name: '@scoped/bar'}, { | ||||
|     get: () => 'e' | ||||
|   }), 'e') | ||||
| 
 | ||||
|   t.is(getRegistry({name: '@scoped/baz'}, { | ||||
|     get: () => null | ||||
|   }), 'https://registry.npmjs.org/') | ||||
| 
 | ||||
|   t.end() | ||||
| }) | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user