From 678fdee85460261efbda0a58f3d08ee2f363fd51 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Sun, 24 Mar 2019 21:28:30 +0200 Subject: [PATCH] fix(config): @pnpm/config should always normalize registries --- packages/config/src/getScopeRegistries.ts | 6 +++++- packages/config/src/index.ts | 4 ++-- packages/config/test/index.ts | 6 ++++-- packages/resolve-dependencies/src/resolveDependencies.ts | 7 +------ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/config/src/getScopeRegistries.ts b/packages/config/src/getScopeRegistries.ts index ea8d69b331..fb1d4eac26 100644 --- a/packages/config/src/getScopeRegistries.ts +++ b/packages/config/src/getScopeRegistries.ts @@ -2,8 +2,12 @@ export default function getScopeRegistries (rawNpmConfig: Object) { const registries = {} for (const configKey of Object.keys(rawNpmConfig)) { if (configKey[0] === '@' && configKey.endsWith(':registry')) { - registries[configKey.substr(0, configKey.indexOf(':'))] = rawNpmConfig[configKey] + registries[configKey.substr(0, configKey.indexOf(':'))] = normalizeRegistry(rawNpmConfig[configKey]) } } return registries } + +export function normalizeRegistry (registry: string) { + return registry.endsWith('/') ? registry : `${registry}/` +} diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 056dabf793..3ab672dc55 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -4,7 +4,7 @@ import camelcase from 'camelcase' import findUp = require('find-up') import path = require('path') import whichcb = require('which') -import getScopeRegistries from './getScopeRegistries' +import getScopeRegistries, { normalizeRegistry } from './getScopeRegistries' import { PnpmConfigs } from './PnpmConfigs' export { PnpmConfigs } @@ -134,7 +134,7 @@ export default async ( }, {} as PnpmConfigs) pnpmConfig.rawNpmConfig = Object.assign.apply(Object, npmConfig.list.reverse().concat([cliArgs])) pnpmConfig.registries = { - default: pnpmConfig.registry || 'https://registry.npmjs.org/', + default: normalizeRegistry(pnpmConfig.registry || 'https://registry.npmjs.org/'), ...getScopeRegistries(pnpmConfig.rawNpmConfig), } const npmGlobalPrefix: string = pnpmConfig.rawNpmConfig['pnpm-prefix'] || diff --git a/packages/config/test/index.ts b/packages/config/test/index.ts index d1dfdecfe2..e0444710bd 100644 --- a/packages/config/test/index.ts +++ b/packages/config/test/index.ts @@ -158,11 +158,13 @@ test('registries of scoped packages are read', async (t) => { }, }) + // tslint:disable t.deepEqual(opts.registries, { - '@bar': 'https://bar.com', - '@foo': 'https://foo.com', 'default': 'https://registry.npmjs.org/', + '@foo': 'https://foo.com/', + '@bar': 'https://bar.com/', }) + // tslint:enable t.end() }) diff --git a/packages/resolve-dependencies/src/resolveDependencies.ts b/packages/resolve-dependencies/src/resolveDependencies.ts index 1ce5657150..4fbb67e1fb 100644 --- a/packages/resolve-dependencies/src/resolveDependencies.ts +++ b/packages/resolve-dependencies/src/resolveDependencies.ts @@ -434,7 +434,7 @@ async function resolveDependency ( } const scope = wantedDependency.alias && getScope(wantedDependency.alias) - const registry = normalizeRegistry(scope && ctx.registries[scope] || ctx.registries.default) + const registry = scope && ctx.registries[scope] || ctx.registries.default let pkgResponse!: PackageResponse try { @@ -736,11 +736,6 @@ function peerDependenciesWithoutOwn (pkg: PackageManifest) { return result } -function normalizeRegistry (registry: string) { - if (registry.endsWith('/')) return registry - return `${registry}/` -} - async function resolveDependenciesOfPackage ( pkg: PackageManifest, ctx: ResolutionContext,