Skip to content

Commit

Permalink
fix(version): remove workspace: prefix on peerDeps & few refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ghiscoding committed Jun 13, 2022
1 parent c645aef commit 6e4e5b7
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
16 changes: 14 additions & 2 deletions packages/core/src/package.ts
Expand Up @@ -251,11 +251,12 @@ export class Package {

/**
* Mutate given dependency (could be local/external) spec according to type
* @param {String} pkgName - package name
* @param {Object} resolved npa metadata
*/
removeDependencyWorkspaceProtocolPrefix(pkgName: string, resolved: NpaResolveResult) {
const depName = resolved.name as string;
const depCollection = this.retrievePackageDependencies(depName);
const depCollection = this.retrievePackageDependencies(depName, true);
const workspaceTarget = resolved?.workspaceTarget ?? '';

if (
Expand Down Expand Up @@ -359,7 +360,13 @@ export class Package {
}
}

private retrievePackageDependencies(depName: string): string[] {
/**
* Retrieve the dependencies collection which contain the dependency name provided, we'll search in all type of dependencies/devDependencies/...
* @param {String} depName - dependency name
* @param {Boolean} [includePeerDepsFallback] - should we include peerDependencies as fallback?
* @returns {Array<String>} - array of dependencies that contains the dependency name provided
*/
private retrievePackageDependencies(depName: string, includePeerDepsFallback = false): string[] {
// first, try runtime dependencies
let depCollection = this.dependencies;

Expand All @@ -373,6 +380,11 @@ export class Package {
depCollection = this.devDependencies;
}

// fall back to peerDependencies (when enabled)
if (includePeerDepsFallback && (!depCollection || !depCollection[depName])) {
depCollection = this.peerDependencies;
}

return depCollection;
}
}
6 changes: 2 additions & 4 deletions packages/publish/src/publish-command.ts
Expand Up @@ -615,11 +615,9 @@ export class PublishCommand extends Command<PublishCommandOption> {
}

// 2. remove any "workspace:" prefix from the package to be published any of external dependencies (without anything being bumped)
// we will only accept "workspace:" with semver version, for example "workspace:1.2.3" is ok but "workspace:*" will throw
// we will only accept "workspace:" with semver version, for example "workspace:1.2.3" is ok but "workspace:*" will log an error
for (const [_depName, resolved] of node.externalDependencies) {
if (/^(workspace:)+(.*)$/.test(resolved.workspaceTarget)) {
node.pkg.removeDependencyWorkspaceProtocolPrefix(node.name, resolved);
}
node.pkg.removeDependencyWorkspaceProtocolPrefix(node.name, resolved);
}

// writing changes to disk handled in serializeChanges()
Expand Down

0 comments on commit 6e4e5b7

Please sign in to comment.