@@ -182,7 +182,8 @@ let rec walk_all_deps_aux
182182 (paths : string list )
183183 ~(top : top )
184184 (dir : string )
185- (queue : _ Queue.t ) =
185+ (queue : _ Queue.t )
186+ ~pinned_dependencies =
186187 let bsconfig_json = dir // Literals. bsconfig_json in
187188 match Ext_json_parse. parse_json_from_file bsconfig_json with
188189 | Obj {map; loc} ->
@@ -223,7 +224,8 @@ let rec walk_all_deps_aux
223224 let package_dir =
224225 Bsb_pkg. resolve_bs_package ~cwd: dir
225226 (Bsb_pkg_types. string_as_package new_package) in
226- walk_all_deps_aux visited package_stacks ~top: (Expect_name new_package) package_dir queue ;
227+ walk_all_deps_aux visited package_stacks ~top: (Expect_name new_package) package_dir queue
228+ ~pinned_dependencies ;
227229 | _ ->
228230 Bsb_exception. errorf ~loc
229231 " %s expect an array"
@@ -232,15 +234,22 @@ let rec walk_all_deps_aux
232234 |> ignore in
233235 begin
234236 explore_deps Bsb_build_schemas. bs_dependencies;
235- if top = Expect_none then explore_deps Bsb_build_schemas. bs_dev_dependencies;
237+ begin match top with
238+ | Expect_none ->
239+ explore_deps Bsb_build_schemas. bs_dev_dependencies
240+ | Expect_name n when
241+ Set_string. mem pinned_dependencies n ->
242+ explore_deps Bsb_build_schemas. bs_dev_dependencies
243+ | Expect_name _ -> ()
244+ end ;
236245 Queue. add {top ; proj_dir = dir} queue;
237246 Hash_string. add visited cur_package_name dir;
238247 end
239248 | _ -> ()
240249
241250
242- let walk_all_deps dir : package_context Queue.t =
251+ let walk_all_deps dir ~ pinned_dependencies : package_context Queue. t =
243252 let visited = Hash_string. create 0 in
244253 let cb = Queue. create () in
245- walk_all_deps_aux visited [] ~top: Expect_none dir cb ;
254+ walk_all_deps_aux visited [] ~top: Expect_none dir cb ~pinned_dependencies ;
246255 cb
0 commit comments