Published on

Handling Multiple Entry Points in Webpack

Authors
  • avatar
    Name
    Hieu Cao
    Twitter

What Are Entry Points in Webpack?

In Webpack, an entry point specifies the starting location for the bundling process. Typically, for simple applications, a single entry point suffices. However, in larger projects, you may need multiple entry points to create distinct bundles for different parts of the application.


Why Use Multiple Entry Points?

Multiple entry points allow you to:

  • Separate code for different sections of your app (e.g., admin dashboard and user portal).
  • Create vendor bundles for third-party libraries, improving caching.
  • Manage dependencies and modularize large projects efficiently.

Setting Up Multiple Entry Points

Update your webpack.config.js file:

const path = require('path')

module.exports = {
  entry: {
    main: './src/main.js', // Main application entry point
    admin: './src/admin.js', // Admin panel entry point
  },
  output: {
    filename: '[name].[contenthash].js', // Dynamic filename based on entry point name
    path: path.resolve(__dirname, 'dist'),
    clean: true, // Clean the output directory before each build
  },
  mode: 'development',
  devServer: {
    static: {
      directory: path.join(__dirname, 'dist'),
    },
    compress: true, // Enable gzip compression
    port: 9000, // Specify the port
    open: true, // Automatically open the browser
    hot: true, // Enable Hot Module Replacement (HMR)
  },
}

Explanation

  • entry: Defines multiple entry points as an object.
  • output.filename: Uses the [name] placeholder to dynamically name output files based on entry point names.

Step 4: Create Source Files

In your src folder, create the necessary JavaScript files:

  • main.js
console.log('This is the main application.')
  • admin.js
console.log('This is the admin panel.')

Step 5: Bundle the Files

Run Webpack to generate the bundles:

npm run build

or

npx webpack

The dist directory will now contain:

  • main.abcd123.js
  • admin.abcd123.js

Conclusion

Using multiple entry points in Webpack allows for better organization and scalability in large applications. By splitting your application into distinct bundles, you can improve maintainability, performance, and caching. Explore advanced features like code splitting and plugins to make the most of Webpack's capabilities.