Webpack

מאגד מודולים לג'אווה סקריפט

Webpack הוא מאגד מודולים חינמי בקוד פתוח עבור ספריות ג'אווה סקריפט. הוא מיועד בעיקר לג'אווה סקריפט, אבל ניתן לעשות בו שימוש לצורך כל סוגי הקבצים המשמשים לפיתוח בצד הלקוח כולל HTMLCSS ותמונות, אם כלולות החבילות המתאימות.

Webpack
מפתח Tobias Koppers עריכת הנתון בוויקינתונים
מחזור חיים 10 במרץ 2012 – הווה (12 שנים) עריכת הנתון בוויקינתונים
גרסה אחרונה 5.91.0 (20 במרץ 2024) עריכת הנתון בוויקינתונים
גרסת בטא 5.71.0
ב־1 באפריל 2022
מערכת הפעלה חוצה-פלטפורמות עריכת הנתון בוויקינתונים
נכתבה בשפות JavaScript
סוג רישיון רישיון MIT עריכת הנתון בוויקינתונים
קוד מקור https://github.com/webpack/webpack עריכת הנתון בוויקינתונים
Linux, macOS, Windows

webpack.js.org
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

שימושים עריכה

Webpack אוסף מודולים חיצוניים ומייצר מהם קבצים מקומיים המייצגים אותם, ומאפשר לעשות בהם שימוש ללא ייבוא בפועל של המודולים שנמצאים בשימוש.

Webpack מייצר גרף תלות המאפשר למפתחי אינטרנט להשתמש בשיטה מודולרית למטרות פיתוח יישומי האינטרנט שלהם.

Node.js נדרש לשימוש ב-webpack.

שתי טכניקות דומות נתמכות על ידי webpack כשמדובר בפיצול קוד דינמי. הגישה הראשונה והמומלצת היא להשתמש בתחביר import() התואם את תקן ה-ECMAScript עבור ייבוא דינמי. הגישה הפחות מומלצת, היא להשתמש בתחביר require שנמצא בשימוש בעיקר ב-CommonJS.

Webpack מציעה גם שרת מקומי, לצורכי פתוח, המאפשר ניפוי שגיאות בזמן אמת. בשילוב של Babel ניתן גם לכתוב קוד בתקן מודרני שאינו נתמך בדפדפנים ישנים, ולקבל בסוף קובץ של קוד הנתמך בכמעט כל הגרסאות של הדפדפנים.

הגדרות עריכה

המודול מופעל משורת הפקודה בפקודה webpack. ניתן להוסיף הגדרות שונות באמצעות הוספת דגלים (flags), או שניתן להגדיר אותו באמצעות קובץ תצורה ששמו webpack.config.js. קובץ זה מגדיר כללים, תוספים וכו' עבור פרויקט בו הוא נמצא. באמצעות הקובץ האמור webpack ניתנת להרחבה באמצעות כללים המאפשרים למפתחים לכתוב משימות מותאמות אישית שהם רוצים לבצע בעת חיבור קבצים יחד. בכדי למנוע בעיות מטמון של הדפדפן שיגרמו לאי רענון לקובץ החדש ניתן להוסיף גיבוב ליניארי לשם הקובץ בכל פעם שהמודול רץ.

להלן דוגמה לקובץ הגדרות:

const path = require("path");//here you must use require syntax

module.exports = {
  mode: "development", //you can chhose "prodoction" when building for production or add to the build script "webpack --mode production"
  entry: {
    bundle: path.resolve(__dirname, "src/index.js"), //here we make it should choose "bundle" for the filename you can choose what ever you would like
  },
  output: {
    path: path.resolve(__dirname, "dist"), //choose the folder name for builded files, here i choosed "dist"
    filename:
      "[name].js" /*you can use instead "[name].[contenthash].js" to add hash to file to help for caching,
                               you can even specify the name instead for example "bundle.[contenthash].js */,
    clean: true, //in case of hashing which cretas new file every time you need to add this line to clean the old file every time
    assetModuleFilename: "[name][ext]", //for images
  },
  devtool: "source-map", //create source map if wanted - helps debog the code
  devServer: {
    //all the settings for dev server
    static: {
      directory: path.resolve(__dirname, "dist"),
    },
    port: 3001,//deafault port if no specifacion is 8080
    open: true,
    hot: true,
    compress: true,
    historyApiFallback: true,
  },
  module: {
    rules: [
      {
        //rule for scss files compiled throgh webpack
        test: /\.scss$/,
        use: ["style-loader", "css-loader", "sass-loader"],
      },
      {
        //rule for using babel to compile for old browser versions
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader",
          options: {
            presets: ["@babel/preset-env"],
          },
        },
      },
      {
        //rule for imag compiling
        test: /\.(png|svg|jpg|jpeg|gif)$/i,
        type: "asset/resource",
      },
    ],
  },
  plugins: [],
};

קישורים חיצוניים עריכה

  מדיה וקבצים בנושא Webpack בוויקישיתוף

הערות שוליים עריכה

  1. ^ "Releases · webpack/webpack". נבדק ב-2022-02-22.