@title Webpack: an introduction @intro Create Angular applications with a Webpack based tooling. @description [**Webpack**](https://webpack.github.io/) is a popular module bundler, a tool for bundling application source code in convenient _chunks_ and for loading that code from a server into a browser. It's an excellent alternative to the *SystemJS* approach used elsewhere in the documentation. This guide offers a taste of Webpack and explains how to use it with Angular applications. # Contents * [What is Webpack?](guide/webpack#what-is-webpack) * [Entries and outputs](guide/webpack#entries-outputs) * [Multiple bundles](guide/webpack#multiple-bundles) * [Loaders](guide/webpack#loaders) * [Plugins](guide/webpack#plugins) * [Configuring Webpack](guide/webpack#configure-webpack) * [Polyfills](guide/webpack#polyfills) * [Common configuration](guide/webpack#common-configuration) * [Inside `webpack.common.js`](guide/webpack#inside-webpack-commonjs) - [entry](guide/webpack#common-entries) - [resolve extension-less imports](guide/webpack#common-resolves) - [`module.rules`](guide/webpack#common-rules) - [Plugins](guide/webpack#plugins) - [`CommonsChunkPlugin`](guide/webpack#commons-chunk-plugin) - [`HtmlWebpackPlugin`](guide/webpack#html-webpack-plugin) * [Environment specific configuration](guide/webpack#environment-configuration) * [Development configuration](guide/webpack#development-configuration) * [Production configuration](guide/webpack#production-configuration) * [Test configuration](guide/webpack#test-configuration) * [Trying it out](guide/webpack#try) * [Highlights](guide/webpack#highlights) * [Conclusion](guide/webpack#conclusion) You can also download the final result. ## What is Webpack? Webpack is a powerful module bundler. A _bundle_ is a JavaScript file that incorporates _assets_ that *belong* together and should be served to the client in a response to a single file request. A bundle can include JavaScript, CSS styles, HTML, and almost any other kind of file. Webpack roams over your application source code, looking for `import` statements, building a dependency graph, and emitting one or more _bundles_. With plugins and rules, Webpack can preprocess and minify different non-JavaScript files such as TypeScript, SASS, and LESS files. You determine what Webpack does and how it does it with a JavaScript configuration file, `webpack.config.js`. {@a entries-outputs} ### Entries and outputs You supply Webpack with one or more *entry* files and let it find and incorporate the dependencies that radiate from those entries. The one entry point file in this example is the application's root file, `src/main.ts`: Webpack inspects that file and traverses its `import` dependencies recursively. It sees that you're importing `@angular/core` so it adds that to its dependency list for potential inclusion in the bundle. It opens the `@angular/core` file and follows _its_ network of `import` statements until it has built the complete dependency graph from `main.ts` down. Then it **outputs** these files to the `app.js` _bundle file_ designated in configuration:
output: { filename: 'app.js' }
This `app.js` output bundle is a single JavaScript file that contains the application source and its dependencies. You'll load it later with a `