jscutlery/semver

`{projectName}` interpolation by Nx causes wrong dependencies versions in changelogs

jsulpis opened this issue · 0 comments

Hi,
I could not reopen #725 but I think the issue is still there, because this interpolation causes wrong dependencies versions in the changelogs:

when setting "tagPrefix": "{projectName}@" in the config file, the versionTagPrefix that comes as argument of the version function is already interpolated as the project name:

versionTagPrefix: options.tagPrefix,

So all the calls to formatTagPrefix do nothing because the {projectName} has already been interpolated. In particular when searching for the latest version of the dependencies, since the tagPrefix is the one of the parent and not the dependency (as it should be), all dependencies versions get resolved to the one of the parent :

/* Get dependency version changes since last project version */
const tagPrefix = formatTagPrefix({
versionTagPrefix,
projectName: dependencyName,
syncVersions,
});
const { lastVersion$, commits$ } = getProjectVersion({
tagPrefix,
projectRoot,
releaseType,
since: lastVersionGitRef,
projectName,
preid,
});

This causes wrong versions in the changelog: {dependency} updated to version {latest version of parent}.

The easy workaround is to not override the tagPrefix in the config.
I guess the fix might not be trivial, if not breaking, but I think at least mentioning the issue in the docs would prevent a few headaches. Thanks !