Skip to content

Commit 010b449

Browse files
committed
Add build tools for pre-publishing, fully resolve yarn workspace versions
1 parent 94ee21f commit 010b449

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

devtools/package-json.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ async function createPackageJson() {
4949
return {
5050
...pkg,
5151
...publish,
52-
dependencies: resolveWorkspaceDependencies(dependencies),
52+
dependencies: await resolveWorkspaceDependencies(dependencies),
5353
};
5454
}
5555

@@ -59,13 +59,30 @@ async function resolveWorkspaceDependencies(deps?: Record<string, string>) {
5959
}
6060

6161
const resolved = { ...deps };
62-
for (const [name] of getWorkspaceDependencies(resolved)) {
63-
resolved[name] = await getWorkspaceVersion(name);
62+
for (const [name, workspaceVersion] of getWorkspaceDependencies(resolved)) {
63+
resolved[name] = getWorkspacePublishVersion(workspaceVersion, await getWorkspaceVersion(name));
64+
65+
console.log(`resolveWorkspaceDependencies(): "${name}" == "${workspaceVersion}" >> "${resolved[name]}"`);
6466
}
6567

6668
return resolved;
6769
}
6870

71+
/**
72+
* Checks whether to use a yarn workspace range modifier (^ or ~) prefix to the `publishVersion`.
73+
*/
74+
function getWorkspacePublishVersion(workspaceVersion: string, publishVersion: string) {
75+
const modifier = workspaceVersion.charAt(10);
76+
if (modifier === '^' || modifier === '~') {
77+
return modifier + publishVersion;
78+
}
79+
80+
return publishVersion;
81+
}
82+
83+
/**
84+
* Get array of `[name, workspaceVersion]` for dependencies that are internal to the workspace
85+
*/
6986
function getWorkspaceDependencies(deps: Record<string, string>) {
7087
return Object.entries(deps).filter(([_name, version]) => version.includes('workspace'));
7188
}

devtools/package-versions.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,5 @@ async function getVersions(): Promise<Record<string, string>> {
3636
}
3737

3838
async function getVersion(path: string) {
39-
console.log(`getVersion( ${path} )`);
4039
return String(JSON.parse(await readFile(path, 'utf8')).version);
4140
}

0 commit comments

Comments
 (0)