File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -22,13 +22,30 @@ def path_for(name, **options)
2222 lookup! ( name , **options ) . fetch ( "file" )
2323 end
2424
25+ # Internal: Recursively collects all imported chunks for a given entry.
26+ # Returns chunks in dependency-first order (deepest imports first), deduped.
27+ def import_chunks_for ( entry , seen_filenames : Set . new )
28+ chunks = [ ]
29+
30+ entry [ "imports" ] &.each do |chunk |
31+ filename = chunk [ "file" ]
32+ next if seen_filenames . include? ( filename )
33+ seen_filenames . add ( filename )
34+
35+ chunks . concat ( import_chunks_for ( chunk , seen_filenames : seen_filenames ) )
36+ chunks << chunk
37+ end
38+
39+ chunks
40+ end
41+
2542 # Public: Returns scripts, imported modules, and stylesheets for the specified
2643 # entrypoint files.
2744 def resolve_entries ( *names , **options )
2845 entries = names . map { |name | lookup! ( name , **options ) }
2946 script_paths = entries . map { |entry | entry . fetch ( "file" ) }
3047
31- imports = dev_server_running? ? [ ] : entries . flat_map { |entry | entry [ "imports" ] } . compact
48+ imports = dev_server_running? ? [ ] : entries . flat_map { |entry | import_chunks_for ( entry ) }
3249 {
3350 scripts : script_paths ,
3451 imports : imports . filter_map { |entry | entry . fetch ( "file" ) } . uniq ,
You can’t perform that action at this time.
0 commit comments