Webpack-Konfigurationsgenerator

webpack.config.js
Ergebnisse

Eine webpack.config.js aus dem Gedächtnis zu schreiben bedeutet, sich an die genaue Form von output, die test-Regex für jeden Loader und die Verdrahtung der Plugins zu erinnern. Dieser Generator macht daraus ein kurzes Formular: Legen Sie Ihre Eingabedatei, den Ausgabeordner und den Build-Modus fest und haken Sie die benötigten Teile an: TypeScript, Babel, einen CSS-Loader, HtmlWebpackPlugin und einen Dev-Server. Er schreibt eine saubere, kopierfertige webpack-5-Konfiguration mit [contenthash]-Dateinamen und bereits gesetztem output.clean.

So erstellen Sie eine Webpack-Konfiguration

  1. 1

    Entry und Ausgabe festlegen

    Geben Sie Ihre Eingabedatei (Standard `./src/index.js`) und den Ausgabeordner (Standard `dist`) ein.

  2. 2

    Modus wählen

    Wählen Sie `production` oder `development`. Der Wert wird direkt in das Feld `mode` geschrieben.

  3. 3

    Loader und Plugins aktivieren

    Aktivieren Sie nach Bedarf TypeScript (`ts-loader`), Babel (`babel-loader`), einen CSS-Loader (`style-loader` + `css-loader`), `HtmlWebpackPlugin` und einen Dev-Server.

  4. 4

    Konfiguration kopieren

    Die `webpack.config.js` aktualisiert sich live. Nutzen Sie die Kopieren-Schaltfläche und fügen Sie sie in das Wurzelverzeichnis Ihres Projekts ein.

Standardausgabe

Mit den Standardwerten (Modus production, TypeScript, Babel, einem CSS-Loader und HtmlWebpackPlugin) erzeugt der Generator:

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' }),
  ],
};

Was jede Option schreibt

Option Was sie zur Konfiguration hinzufügt
entry Der Wert von entry, z. B. entry: './src/index.js'.
Ausgabeordner output.path, aufgelöst mit path.resolve(__dirname, 'dist').
mode mode: 'production' oder mode: 'development'.
TypeScript Eine ts-loader-Regel für .ts/.tsx sowie diese Endungen in resolve.
Babel Eine babel-loader-Regel für .js/.jsx.
CSS-Loader Eine Regel, die style-loader und css-loader für .css verkettet.
HtmlWebpackPlugin Die require-Zeile plus new HtmlWebpackPlugin({ template: './src/index.html' }).
Dev-Server Ein devServer-Block, der den Ausgabeordner auf Port 3000 mit Hot Reload bereitstellt.

Feste Vorgaben in der Ausgabe

Damit die Starter-Konfiguration schlank bleibt, sind einige Werte fest gesetzt statt als Felder freigegeben:

  • Gehashte Dateinamen. output.filename ist stets bundle.[contenthash].js, was den Browser-Cache jedes Mal invalidiert, wenn sich das Bundle ändert.
  • Saubere Ausgabe. output.clean: true leert den Ausgabeordner bei jedem Build, der webpack-5-Ersatz für clean-webpack-plugin.
  • CSS wird gebündelt, nicht extrahiert. style-loader fügt die Styles über JavaScript ein. Um in Produktion eine separate .css-Datei zu erzeugen, ergänzen Sie MiniCssExtractPlugin selbst.
  • Dev-Server-Grundlagen. Aktiviert setzt devServer static, port: 3000 und hot: true. Ergänzen Sie Optionen wie historyApiFallback oder proxy von Hand, falls Ihre App sie braucht.

So erweitern Sie es

Die erzeugte Datei ist ein Ausgangspunkt, keine vollständige Produktions-Konfiguration. Übliche nächste Schritte, die Sie von Hand ergänzen: MiniCssExtractPlugin für extrahiertes CSS, sass-loader für .scss, die asset-Module von webpack 5 für Bilder und Schriften, ein devtool-Wert für Source Maps und ein splitChunks-Block für Code-Splitting.

Häufig gestellte Fragen

Für webpack 5. Die Ausgabe verwendet output.clean und [contenthash]-Dateinamen, die modernen webpack-5-Konventionen, sodass kein zusätzliches Clean-Plugin nötig ist.

Nein, es schreibt immer eine webpack.config.js in JavaScript. Die TypeScript-Option fügt eine ts-loader-Regel hinzu, damit webpack Ihren .ts/.tsx-Quellcode kompiliert; sie ändert nicht das Format der Konfigurationsdatei selbst.

Der erzeugte devServer-Block verwendet Port 3000 mit Hot Reload. Ändern Sie den port-Wert in der kopierten Datei, wenn Sie einen anderen brauchen.

Ja. Jede Option fügt ihre eigene Regel hinzu (ts-loader für .tsx?, babel-loader für .jsx?), sodass Sie je nach Transpilierung Ihres Projekts die eine, die andere oder beide aktivieren können.

Verwandte Tools

Tool in anderen Sprachen verfügbar