aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-20 17:52:50 -0800
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-12-20 17:52:50 -0800
commit453fae4a5c8100a0e1de4fefb78bed3cbbde795e (patch)
treeaa268e1de74a1de348bc04bd664bf7f494409ed7
parent3f32222360f8c5e468e336e2225aeb3c3d1eb9a7 (diff)
downloadbun-453fae4a5c8100a0e1de4fefb78bed3cbbde795e.tar.gz
bun-453fae4a5c8100a0e1de4fefb78bed3cbbde795e.tar.zst
bun-453fae4a5c8100a0e1de4fefb78bed3cbbde795e.zip
[bun install] Strip leading v in versions
-rw-r--r--src/install/dependency.zig22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/install/dependency.zig b/src/install/dependency.zig
index 2f56753a3..ebc61572e 100644
--- a/src/install/dependency.zig
+++ b/src/install/dependency.zig
@@ -351,6 +351,21 @@ pub const Version = struct {
return .dist_tag;
},
+ // Dependencies can start with v
+ // v1.0.0 is the same as 1.0.0
+ // However, a github repo or a tarball could start with v
+ 'v' => {
+ if (isTarball(dependency)) {
+ return .tarball;
+ }
+
+ if (isGithubRepoPath(dependency)) {
+ return .github;
+ }
+
+ return .npm;
+ },
+
// file:
'f' => {
if (isTarball(dependency))
@@ -468,6 +483,13 @@ pub fn parse(allocator: *std.mem.Allocator, dependency_: string, sliced: *const
dependency = dependency[4..];
}
+ // Strip single leading v
+ // v1.0.0 -> 1.0.0
+ // note: "vx" is valid, it becomes "x". "yarn add react@vx" -> "yarn add react@x" -> "yarn add react@17.0.2"
+ if (tag == .npm and dependency.len > 1 and dependency[0] == 'v') {
+ dependency = dependency[1..];
+ }
+
return parseWithTag(
allocator,
dependency,