Generator konfiguracji webpack
Pisanie webpack.config.js z pamięci oznacza przypominanie sobie dokładnego kształtu output, wyrażenia test dla każdego loadera i tego, jak łączą się wtyczki. Ten generator zamienia to w krótki formularz: ustaw plik wejściowy, folder wyjściowy i tryb budowania, a potem zaznacz potrzebne elementy: TypeScript, Babel, loader CSS, HtmlWebpackPlugin i serwer deweloperski. Tworzy czystą, gotową do skopiowania konfigurację webpacka 5 z nazwami plików [contenthash] i już ustawionym output.clean.
Jak utworzyć konfigurację webpack
-
1
Ustaw entry i wyjście
Wpisz plik wejściowy (domyślnie `./src/index.js`) i folder wyjściowy (domyślnie `dist`).
-
2
Wybierz tryb
Wybierz `production` lub `development`. Wartość trafia wprost do pola `mode`.
-
3
Włącz loadery i wtyczki
Włącz według potrzeb TypeScript (`ts-loader`), Babel (`babel-loader`), loader CSS (`style-loader` + `css-loader`), `HtmlWebpackPlugin` i serwer deweloperski.
-
4
Skopiuj konfigurację
Plik `webpack.config.js` aktualizuje się na żywo. Użyj przycisku kopiowania i wklej go do katalogu głównego projektu.
Wyjście domyślne
Przy ustawieniach domyślnych (tryb production, TypeScript, Babel, loader CSS i HtmlWebpackPlugin) generator tworzy:
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' }),
],
};
Co zapisuje każda opcja
| Opcja | Co dodaje do konfiguracji |
|---|---|
| entry | Wartość entry, np. entry: './src/index.js'. |
| folder wyjściowy | output.path, rozwiązany przez path.resolve(__dirname, 'dist'). |
| mode | mode: 'production' lub mode: 'development'. |
| TypeScript | Regułę ts-loader dla .ts/.tsx oraz te rozszerzenia w resolve. |
| Babel | Regułę babel-loader dla .js/.jsx. |
| loader CSS | Regułę łączącą style-loader i css-loader dla .css. |
| HtmlWebpackPlugin | Wiersz require oraz new HtmlWebpackPlugin({ template: './src/index.html' }). |
| serwer deweloperski | Blok devServer serwujący folder wyjściowy na porcie 3000 z przeładowaniem na gorąco. |
Stałe wybory w wyjściu
Aby konfiguracja startowa była zwięzła, kilka wartości jest ustawianych za ciebie, zamiast być udostępnianych jako pola:
- Nazwy plików z haszem.
output.filenameto zawszebundle.[contenthash].js, co unieważnia pamięć podręczną przeglądarki za każdym razem, gdy bundle się zmienia. - Czyste wyjście.
output.clean: trueopróżnia folder wyjściowy przy każdym buildzie, to zamiennikclean-webpack-pluginw webpacku 5. - CSS jest dołączany do bundle’a, nie wyodrębniany.
style-loaderwstrzykuje style przez JavaScript. Aby w produkcji utworzyć osobny plik.css, dodajMiniCssExtractPluginsamodzielnie. - Podstawy serwera deweloperskiego. Po włączeniu
devServerustawiastatic,port: 3000ihot: true. Opcje takie jakhistoryApiFallbackczyproxydodaj ręcznie, jeśli aplikacja ich potrzebuje.
Jak to rozbudować
Wygenerowany plik to punkt wyjścia, a nie kompletna konfiguracja produkcyjna. Typowe kolejne kroki, które dodajesz ręcznie: MiniCssExtractPlugin do wyodrębniania CSS, sass-loader dla .scss, moduły asset webpacka 5 dla obrazów i czcionek, wartość devtool dla source map oraz blok splitChunks do dzielenia kodu.
Najczęściej zadawane pytania
Dla webpacka 5. Wyjście używa output.clean i nazw plików [contenthash], czyli nowoczesnych konwencji webpacka 5, więc żadna dodatkowa wtyczka czyszcząca nie jest potrzebna.
Nie, zawsze zapisuje webpack.config.js w JavaScript. Włączenie opcji TypeScript dodaje regułę ts-loader, aby webpack kompilował twój kod .ts/.tsx; nie zmienia to formatu samego pliku konfiguracyjnego.
Wygenerowany blok devServer używa portu 3000 z przeładowaniem na gorąco. Zmień wartość port w skopiowanym pliku, jeśli potrzebujesz innego.
Tak. Każda opcja dodaje własną regułę (ts-loader dla .tsx?, babel-loader dla .jsx?), więc możesz włączyć jedną, drugą albo obie, zależnie od tego, jak twój projekt transpiluje kod.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Podgląd Markdown
Pisz w Markdown i obserwuj, jak wyrenderowany HTML aktualizuje się na żywo. Składnia w stylu GitHub z tabelami, listami zadań, ogrodzonymi blokami kodu i automatycznymi odnośnikami.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Formater JavaScript
Formatuj JavaScript, JSX, TypeScript i JSON z konfigurowalnym wcięciem, stylem cudzysłowów, średnikami i przecinkami końcowymi.
Narzędzie odstępów w kodzie Python
Ujednolić wcięcia oraz proste odstępy przy przecinkach i operatorach. To lekka obróbka tekstu, a nie Black, Ruff ani parser Pythona.
Narzędzie jest dostępne w innych językach
- Webpack設定ジェネレーター [JA]
- Générateur de configuration Webpack [FR]
- Trình tạo cấu hình webpack [VI]
- Webpack-configuratiegenerator [NL]
- مولّد إعدادات Webpack [AR]
- Webpack-Konfigurationsgenerator [DE]
- ตัวสร้างการตั้งค่า Webpack [TH]
- Gerador de Configuração Webpack [PT]
- Webpack 설정 생성기 [KO]
- Generador de Configuración de Webpack [ES]
- Webpack-konfigurationsgenerator [SV]
- Generator Konfigurasi Webpack [ID]
- Webpack Config Generator [EN]
- Generatore di Configurazione Webpack [IT]
- Генератор конфигурации webpack [RU]
- Webpack Yapılandırma Oluşturucu [TR]
- Webpack 配置生成器 [ZH]