Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 2.61 KB

File metadata and controls

67 lines (47 loc) · 2.61 KB
title Configuration
sort 5
contributors
TheLarkInn
simon04
EugeneHlushko
byzyk

You may have noticed that few webpack configurations look exactly alike. This is because webpack's configuration file is a JavaScript file that exports a webpack configuration. This configuration is then processed by webpack based upon its defined properties.

Because it's a standard ECMAScript Module, you can do the following:

  • Import other files via import...from...
  • use utilities on npm via import
  • use JavaScript control flow expressions, e.g. the ?: operator
  • use constants or variables for often used values
  • write and execute functions to generate a part of the configuration
  • emulate __dirname using fileURLToPath(import.meta.url) and path.dirname() for path resolution

Use these features when appropriate.

While they are technically feasible, the following practices should be avoided:

  • Access CLI arguments, when using the webpack CLI (instead write your own CLI, or use --env)
  • Export non-deterministic values (calling webpack twice should result in the same output files)
  • Write long configurations (instead split the configuration into multiple files)

T> The most important part to take away from this document is that there are many different ways to format and style your webpack configuration. The key is to stick with something consistent that you and your team can understand and maintain.

The examples below describe how webpack's configuration can be both expressive and configurable because it is code:

Introductory Configuration

webpack.config.js

import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export default {
  mode: 'development',
  entry: './foo.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'foo.bundle.js',
  },
};

See: Configuration section for all supported configuration options

Multiple Targets

Along with exporting a single configuration as an object, function or Promise, you can export multiple configurations.

See: Exporting multiple configurations

Using other Configuration Languages

Webpack accepts configuration files written in multiple programming and data languages.

See: Configuration Languages