Générateur de configuration Webpack

webpack.config.js
Résultats

Écrire un webpack.config.js de mémoire, c’est se rappeler la forme exacte de output, la regex test de chaque loader et la façon dont les plugins se branchent. Ce générateur transforme cela en un formulaire court : définissez votre fichier d’entrée, le dossier de sortie et le mode de build, puis cochez les éléments dont vous avez besoin : TypeScript, Babel, un loader CSS, HtmlWebpackPlugin et un serveur de développement. Il produit une configuration webpack 5 propre et prête à copier, avec des noms de fichiers [contenthash] et output.clean déjà en place.

Comment créer une configuration webpack

  1. 1

    Définissez entry et sortie

    Saisissez votre fichier d'entrée (par défaut `./src/index.js`) et le dossier de sortie (par défaut `dist`).

  2. 2

    Choisissez le mode

    Sélectionnez `production` ou `development`. La valeur est écrite directement dans le champ `mode`.

  3. 3

    Activez les loaders et plugins

    Activez selon vos besoins TypeScript (`ts-loader`), Babel (`babel-loader`), un loader CSS (`style-loader` + `css-loader`), `HtmlWebpackPlugin` et un serveur de développement.

  4. 4

    Copiez la configuration

    Le `webpack.config.js` se met à jour en direct. Utilisez le bouton de copie et collez-le à la racine de votre projet.

Sortie par défaut

Avec les valeurs par défaut (mode production, TypeScript, Babel, un loader CSS et HtmlWebpackPlugin), le générateur produit :

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.[contenthash].js',
    clean: true,
  },
  resolve: { extensions: ['.ts','.tsx','.js'] },
  module: {
    rules: [
      { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ },
      { test: /\.jsx?$/, exclude: /node_modules/, use: 'babel-loader' },
      { test: /\.css$/, use: ['style-loader', 'css-loader'] },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

Ce que chaque option écrit

Option Ce qu’elle ajoute à la configuration
entry La valeur de entry, par ex. entry: './src/index.js'.
dossier de sortie output.path, résolu avec path.resolve(__dirname, 'dist').
mode mode: 'production' ou mode: 'development'.
TypeScript Une règle ts-loader pour .ts/.tsx, plus ces extensions dans resolve.
Babel Une règle babel-loader pour .js/.jsx.
loader CSS Une règle qui enchaîne style-loader et css-loader pour .css.
HtmlWebpackPlugin La ligne require plus new HtmlWebpackPlugin({ template: './src/index.html' }).
serveur de développement Un bloc devServer qui sert le dossier de sortie sur le port 3000 avec rechargement à chaud.

Choix fixés dans la sortie

Pour garder la configuration de départ propre, quelques valeurs sont fixées pour vous plutôt qu’exposées comme des champs :

  • Noms de fichiers hachés. output.filename est toujours bundle.[contenthash].js, ce qui invalide le cache du navigateur chaque fois que le bundle change.
  • Sortie propre. output.clean: true vide le dossier de sortie à chaque build, le remplacement webpack 5 de clean-webpack-plugin.
  • Le CSS est empaqueté, pas extrait. style-loader injecte les styles via JavaScript. Pour émettre un fichier .css distinct en production, ajoutez MiniCssExtractPlugin vous-même.
  • Serveur de développement de base. Une fois activé, devServer définit static, port: 3000 et hot: true. Ajoutez à la main des options comme historyApiFallback ou proxy si votre application en a besoin.

Pour aller plus loin

Le fichier généré est un point de départ, pas une configuration de production complète. Étapes suivantes courantes que vous ajoutez à la main : MiniCssExtractPlugin pour extraire le CSS, sass-loader pour .scss, les modules asset de webpack 5 pour les images et les polices, une valeur devtool pour les source maps et un bloc splitChunks pour le découpage du code.

Questions fréquentes

Pour webpack 5. La sortie utilise output.clean et des noms de fichiers [contenthash], les conventions modernes de webpack 5, si bien qu’aucun plugin de nettoyage supplémentaire n’est nécessaire.

Non, il écrit toujours un webpack.config.js en JavaScript. Activer l’option TypeScript ajoute une règle ts-loader pour que webpack compile votre source .ts/.tsx ; cela ne change pas le format du fichier de configuration lui-même.

Le bloc devServer généré utilise le port 3000 avec rechargement à chaud. Modifiez la valeur port dans le fichier copié si vous en voulez un autre.

Oui. Chaque option ajoute sa propre règle (ts-loader pour .tsx?, babel-loader pour .jsx?), vous pouvez donc activer l’une, l’autre ou les deux selon la façon dont votre projet transpile.

Outils similaires

Outil disponible dans d’autres langues