Sobes.tech
Junior

Čo je Webpack a na čo slúži?

sobes.tech AI

Odpoveď od AI

Webpack je statický modulárny buildovací nástroj pre moderné JavaScriptové aplikácie. Spracováva súbory vášho projektu (moduly) a spája ich do jedného alebo viacerých balíkov (bundle), ktoré je možné použiť v prehliadači.

Hlavné úlohy a výhody Webpacku:

  • Skladanie modulov: Spája všetky závislosti projektu (JavaScript, CSS, obrázky atď.) do optimalizovaných súborov. To umožňuje používať modulárny prístup pri vývoji.
  • Transpilácia a polyfily: Pomocou loaderov môže transformovať moderný JavaScript (ES6+) na staršie štandardy (ES5), zrozumiteľné väčšine prehliadačov, a tiež pridávať polyfily pre podporu nových API.
  • Správa zdrojov: Môže spracovávať nielen JavaScript, ale aj iné typy súborov, ako sú CSS (cez css-loader, style-loader), obrázky (asset/resource), písma atď., vrátane ich začlenenia do balíka alebo vytvárania samostatných súborov.
  • Optimalizácia: Ponúka množstvo pluginov (plugins) na optimalizáciu veľkosti balíka, ako je minifikácia, kompresia, odstránenie nepoužívaného kódu (tree shaking).
  • Delenie kódu (Code Splitting): Umožňuje rozdeľovať balík na menšie časti, ktoré sa načítavajú na požiadanie. To zrýchľuje počiatočné načítanie aplikácie.
  • Horká výmena modulov (Hot Module Replacement - HMR): Umožňuje aktualizovať moduly v bežiacej aplikácii bez úplného obnovenia stránky, čo výrazne zrýchľuje vývojový proces.
  • Správa závislostí: Pomáha efektívne riadiť zložitý graf závislostí v projekte.

Príklad základnej konfigurácie (súbor webpack.config.js):

// webpack.config.js
const path = require('path');

module.exports = {
  entry: './src/index.js', // Vstupný bod
  output: {
    filename: 'bundle.js', // Názov výstupného balíka
    path: path.resolve(__dirname, 'dist'), // Složka pre výstupné súbory
  },
  module: {
    rules: [
      {
        test: /\.js$/, // Pravidlo pre súbory s príponou .js
        exclude: /node_modules/, // Vylúčiť priečinok node_modules
        use: {
          loader: 'babel-loader', // Použitie babel-loader na transpiláciu
        },
      },
      {
        test: /\.css$/, // Pravidlo pre súbory s príponou .css
        use: [
          'style-loader', // Pridáva CSS do DOM
          'css-loader',   // Spracováva CSS
        ],
      },
    ],
  },
  plugins: [
    // Ďalšie pluginy (napríklad na minifikáciu, kopírovanie súborov)
  ],
  devServer: {
    static: {
      directory: path.join(__dirname, 'dist'),
    },
    compress: true, // Zapnutie kompresie
    port: 9000,     // Port vývojového servera
  },
};

Webpack sa stal štandardom pre zostavovanie moderných webových aplikácií, najmä pri použití frameworkov a knižníc ako React, Vue a Angular.