1. A method comprising: performing a static analysis of a set of web application files to identify components declared by dynamic programming language instructions contained in the set of web application files and to identify direct runtime dependencies between the identified components, wherein performing the static analysis comprises parsing the dynamic programming language instructions to identify patterns indicative of component declarations and direct runtime dependencies between components; storing runtime dependency information that reflects results of the static analysis; using the runtime dependency information to determine which of the identified components are needed at runtime and which, if any, of the identified components are not needed at runtime, wherein one or more of the identified components are determined to be needed at runtime and one more of the identified components are determined not to be needed at runtime; and generating a single file comprising dynamic programming language instructions declaring the one or more identified components that are needed at runtime and omitting dynamic programming language instructions declaring the one or more identified components that are not needed at runtime; wherein the runtime dependency information represents a dependency graph of nodes and directed edges between the nodes, each node of the graph representing a component identified by the static analysis and each directed edge of the graph from a node A to a node B representing a direct runtime dependency of the identified component corresponding to node A on the identified component corresponding to node B; wherein the method is performed by a computing device.