diff options
| author | 2021-12-12 19:30:04 -0800 | |
|---|---|---|
| committer | 2021-12-16 19:18:51 -0800 | |
| commit | 8586d2e41c935574366b0676e9db80f269caa721 (patch) | |
| tree | 7a0a4a3a37b99044ccf70e6a5692f4b25b05d090 /src | |
| parent | ba1e95fd435b13215127fa2b69c5b1985925103e (diff) | |
| download | bun-8586d2e41c935574366b0676e9db80f269caa721.tar.gz bun-8586d2e41c935574366b0676e9db80f269caa721.tar.zst bun-8586d2e41c935574366b0676e9db80f269caa721.zip | |
[bun install] Support dependencies prefixed with "npm:"
Diffstat (limited to 'src')
| -rw-r--r-- | src/install/dependency.zig | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/install/dependency.zig b/src/install/dependency.zig index 5d0e53542..c644aa6e6 100644 --- a/src/install/dependency.zig +++ b/src/install/dependency.zig @@ -247,6 +247,12 @@ pub const Version = struct { // npm package '=', '>', '<', '0'...'9', '^', '*', '~', '|' => return Tag.npm, + 'n' => { + if (dependency.len > 4 and strings.eqlComptimeIgnoreLen(dependency[0..4], "npm:")) { + return Tag.npm; + } + }, + // MIGHT be semver, might not be. 'x', 'X' => { if (dependency.len == 1) { @@ -381,17 +387,17 @@ pub const Version = struct { return .dist_tag; }, - else => { - if (isTarball(dependency)) - return .tarball; + else => {}, + } - if (isGitHubRepoPath(dependency)) { - return .github; - } + if (isTarball(dependency)) + return .tarball; - return .dist_tag; - }, + if (isGitHubRepoPath(dependency)) { + return .github; } + + return .dist_tag; } }; @@ -432,13 +438,19 @@ pub fn eqlResolved(a: Dependency, b: Dependency) bool { } pub fn parse(allocator: *std.mem.Allocator, dependency_: string, sliced: *const SlicedString, log: *logger.Log) ?Version { - const dependency = std.mem.trimLeft(u8, dependency_, " \t\n\r"); + var dependency = std.mem.trimLeft(u8, dependency_, " \t\n\r"); if (dependency.len == 0) return null; + const tag = Version.Tag.infer(dependency); + + if (tag == .npm and dependency.len > 4 and strings.eqlComptimeIgnoreLen(dependency[0..4], "npm:")) { + dependency = dependency[4..]; + } + return parseWithTag( allocator, dependency, - Version.Tag.infer(dependency), + tag, sliced, log, ); |
