Skip to content

Commit

Permalink
fix: symlink a workspace pkg correctly, when it has a custom publish dir
Browse files Browse the repository at this point in the history
close #3901
  • Loading branch information
zkochan committed Jul 25, 2022
1 parent dcab314 commit 92d5aa6
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions packages/npm-resolver/src/index.ts
Expand Up @@ -291,11 +291,13 @@ function pickMatchingLocalVersionOrNull (
}
}

interface LocalPackage {
dir: string
manifest: DependencyManifest
}

function resolveFromLocalPackage (
localPackage: {
dir: string
manifest: DependencyManifest
},
localPackage: LocalPackage,
normalizedPref: string | undefined,
opts: {
hardLinkLocalPackages?: boolean
Expand All @@ -305,12 +307,13 @@ function resolveFromLocalPackage (
) {
let id!: string
let directory!: string
const localPackageDir = resolveLocalPackageDir(localPackage)
if (opts.hardLinkLocalPackages) {
directory = normalize(path.relative(opts.lockfileDir!, localPackage.dir))
directory = normalize(path.relative(opts.lockfileDir!, localPackageDir))
id = `file:${directory}`
} else {
directory = localPackage.dir
id = `link:${normalize(path.relative(opts.projectDir, localPackage.dir))}`
directory = localPackageDir
id = `link:${normalize(path.relative(opts.projectDir, localPackageDir))}`
}
return {
id,
Expand All @@ -324,6 +327,11 @@ function resolveFromLocalPackage (
}
}

function resolveLocalPackageDir (localPackage: LocalPackage) {
if (localPackage.manifest.publishConfig?.directory == null) return localPackage.dir
return path.join(localPackage.dir, localPackage.manifest.publishConfig.directory)
}

function defaultTagForAlias (alias: string, defaultTag: string): RegistryPackageSpec {
return {
fetchSpec: defaultTag,
Expand Down

0 comments on commit 92d5aa6

Please sign in to comment.