Skip to content

Commit 542badb

Browse files
authored
feat: allow pinned dependencies to be tagged (#234)
1 parent a5da79d commit 542badb

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/package.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,18 +126,24 @@ export class Package extends AsyncOptionalCreatable {
126126
}
127127
const { pinnedDependencies, dependencies } = this.packageJson;
128128
const deps = pinnedDependencies.map((d) => {
129-
const version = dependencies[d];
129+
const tagRegex = /(?<=(^@.*?)@)(.*?)$/;
130+
const [tag] = tagRegex.exec(d) || [];
131+
const name = tag ? d.replace(new RegExp(`@${tag}$`), '') : d;
132+
const version = dependencies[name];
133+
130134
if (version.startsWith('npm:')) {
131135
return {
132136
name: version.replace('npm:', '').replace(/@(\^|~)?[0-9]{1,3}(?:.[0-9]{1,3})?(?:.[0-9]{1,3})?(.*?)$/, ''),
133137
version: version.split('@').reverse()[0].replace('^', '').replace('~', ''),
134-
alias: d,
138+
alias: name,
139+
tag: tag || targetTag,
135140
};
136141
} else {
137142
return {
138-
name: d,
143+
name,
139144
version: version.split('@').reverse()[0].replace('^', '').replace('~', ''),
140145
alias: null,
146+
tag: tag || targetTag,
141147
};
142148
}
143149
});
@@ -149,7 +155,7 @@ export class Package extends AsyncOptionalCreatable {
149155
silent: true,
150156
});
151157
const versions = JSON.parse(result.stdout) as Record<string, string>;
152-
let tag = targetTag;
158+
let tag = dep.tag;
153159

154160
// if tag is 'latest-rc' and there's no latest-rc release for a package, default to latest
155161
if (!versions[tag]) {

0 commit comments

Comments
 (0)