diff options
author | 2021-12-20 17:52:50 -0800 | |
---|---|---|
committer | 2021-12-20 17:52:50 -0800 | |
commit | 453fae4a5c8100a0e1de4fefb78bed3cbbde795e (patch) | |
tree | aa268e1de74a1de348bc04bd664bf7f494409ed7 /src | |
parent | 3f32222360f8c5e468e336e2225aeb3c3d1eb9a7 (diff) | |
download | bun-453fae4a5c8100a0e1de4fefb78bed3cbbde795e.tar.gz bun-453fae4a5c8100a0e1de4fefb78bed3cbbde795e.tar.zst bun-453fae4a5c8100a0e1de4fefb78bed3cbbde795e.zip |
[bun install] Strip leading v in versions
Diffstat (limited to 'src')
-rw-r--r-- | src/install/dependency.zig | 22 |
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, |