diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/install/install.zig | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/install/install.zig b/src/install/install.zig index ddad15dd9..54131fc2a 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -4771,10 +4771,15 @@ pub const PackageManager = struct { ast_modifier: { // Try to use the existing spot in the dependencies list if possible for (updates) |*update| { - outer: for (dependency_lists_to_check) |list| { + for (dependency_lists_to_check) |list| { if (current_package_json.asProperty(list)) |query| { if (query.expr.data == .e_object) { - if (query.expr.asProperty(update.name)) |value| { + if (query.expr.asProperty( + if (update.is_aliased) + update.name + else + update.version.literal.slice(update.version_buf), + )) |value| { if (value.expr.data == .e_string) { if (!update.resolved_name.isEmpty() and strings.eql(list, dependency_list)) { replacing += 1; @@ -4783,7 +4788,7 @@ pub const PackageManager = struct { remaining -= 1; } } - break :outer; + break; } } } @@ -4811,7 +4816,13 @@ pub const PackageManager = struct { var k: usize = 0; while (k < new_dependencies.len) : (k += 1) { if (new_dependencies[k].key) |key| { - if (key.data.e_string.eql(string, update.name)) { + if (key.data.e_string.eql( + string, + if (update.is_aliased) + update.name + else + update.version.literal.slice(update.version_buf), + )) { if (update.resolved_name.isEmpty()) { // This actually is a duplicate // like "react" appearing in both "dependencies" and "optionalDependencies" @@ -4832,8 +4843,10 @@ pub const PackageManager = struct { new_dependencies[k].key = try JSAst.Expr.init( JSAst.E.String, JSAst.E.String{ - .data = try allocator.dupe(u8, if (update.is_aliased or update.resolved_name.isEmpty()) + .data = try allocator.dupe(u8, if (update.is_aliased) update.name + else if (update.resolved_name.isEmpty()) + update.version.literal.slice(update.version_buf) else update.resolved_name.slice(update.version_buf)), }, |