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 { readFileSync, writeFileSync } = require('fs') | ||||||
| const path = require('path') | const path = require('path') | ||||||
|  | const url = require('url') | ||||||
| 
 | 
 | ||||||
| const _ = require('lodash') | const _ = require('lodash') | ||||||
| const log = require('npmlog') | const log = require('npmlog') | ||||||
| @ -45,11 +46,12 @@ npmconf.load({}, (err, conf) => { | |||||||
|       token: env.NPM_TOKEN |       token: env.NPM_TOKEN | ||||||
|     }, |     }, | ||||||
|     loglevel: conf.get('loglevel'), |     loglevel: conf.get('loglevel'), | ||||||
|     registry: conf.get('registry'), |     registry: require('./lib/get-registry')(pkg, conf), | ||||||
|     tag: (pkg.publishConfig || {}).tag || conf.get('tag') || 'latest' |     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 |   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