Generatore di Configurazione Webpack

webpack.config.js
Risultati

Scrivere un webpack.config.js a memoria significa ricordare la forma esatta di output, la regex test di ogni loader e come si collegano i plugin. Questo generatore lo trasforma in un modulo breve: imposta il file di ingresso, la cartella di output e la modalità di build, poi spunta le parti che ti servono: TypeScript, Babel, un loader CSS, HtmlWebpackPlugin e un server di sviluppo. Produce una configurazione webpack 5 pulita e pronta da copiare, con nomi di file [contenthash] e output.clean già presenti.

Come creare una configurazione webpack

  1. 1

    Imposta entry e output

    Digita il file di ingresso (predefinito `./src/index.js`) e la cartella di output (predefinita `dist`).

  2. 2

    Scegli la modalità

    Seleziona `production` o `development`. Il valore viene scritto direttamente nel campo `mode`.

  3. 3

    Attiva loader e plugin

    Attiva secondo le necessità TypeScript (`ts-loader`), Babel (`babel-loader`), un loader CSS (`style-loader` + `css-loader`), `HtmlWebpackPlugin` e un server di sviluppo.

  4. 4

    Copia la configurazione

    Il `webpack.config.js` si aggiorna in tempo reale. Usa il pulsante di copia e incollalo nella radice del progetto.

Output predefinito

Con i valori predefiniti (modalità production, TypeScript, Babel, un loader CSS e HtmlWebpackPlugin), il generatore produce:

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

Cosa scrive ogni opzione

Opzione Cosa aggiunge alla configurazione
entry Il valore di entry, ad es. entry: './src/index.js'.
cartella di output output.path, risolto con path.resolve(__dirname, 'dist').
mode mode: 'production' oppure mode: 'development'.
TypeScript Una regola ts-loader per .ts/.tsx, più quelle estensioni in resolve.
Babel Una regola babel-loader per .js/.jsx.
loader CSS Una regola che concatena style-loader e css-loader per .css.
HtmlWebpackPlugin La riga require più new HtmlWebpackPlugin({ template: './src/index.html' }).
server di sviluppo Un blocco devServer che serve la cartella di output sulla porta 3000 con ricarica a caldo.

Scelte fisse nell’output

Per mantenere pulita la configurazione iniziale, alcuni valori sono impostati per te invece di essere esposti come campi:

  • Nomi di file con hash. output.filename è sempre bundle.[contenthash].js, il che invalida la cache del browser ogni volta che il bundle cambia.
  • Output pulito. output.clean: true svuota la cartella di output a ogni build, il sostituto di webpack 5 per clean-webpack-plugin.
  • Il CSS viene incluso nel bundle, non estratto. style-loader inietta gli stili tramite JavaScript. Per emettere un file .css separato in produzione, aggiungi tu stesso MiniCssExtractPlugin.
  • Server di sviluppo di base. Quando è attivo, devServer imposta static, port: 3000 e hot: true. Aggiungi a mano opzioni come historyApiFallback o proxy se la tua app ne ha bisogno.

Come ampliarlo

Il file generato è un punto di partenza, non una configurazione di produzione completa. Passi successivi comuni che aggiungi a mano: MiniCssExtractPlugin per estrarre il CSS, sass-loader per .scss, i moduli asset di webpack 5 per immagini e font, un valore devtool per i source map e un blocco splitChunks per la suddivisione del codice.

Domande frequenti

Per webpack 5. L’output usa output.clean e nomi di file [contenthash], le convenzioni moderne di webpack 5, quindi non serve alcun plugin di pulizia aggiuntivo.

No, scrive sempre un webpack.config.js in JavaScript. Attivare l’opzione TypeScript aggiunge una regola ts-loader affinché webpack compili il tuo codice .ts/.tsx; non cambia il formato del file di configurazione in sé.

Il blocco devServer generato usa la porta 3000 con ricarica a caldo. Cambia il valore port nel file copiato se te ne serve un’altra.

Sì. Ogni opzione aggiunge la propria regola (ts-loader per .tsx?, babel-loader per .jsx?), quindi puoi attivare l’una, l’altra o entrambe a seconda di come il tuo progetto transpila.

Strumenti correlati

Strumento disponibile in altre lingue