קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ כלים נוספים ♦ מה זה webpack ואיך משתמשים בזה?

מה זה webpack ואיך משתמשים בזה?

וינר יאיר 15 במאי 2021 אין תגובות

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

אז אם תרצו להכיר קצת וובפאק בשביל לא לפחד ממנו, הפוסט הזה בשבילכם.

מה בפוסט :

  1. מה זה webpack
  2. איך משתמשים ב webpack
  3. שימושים נפוצים בתעשיה

1.מי אתה webpack

וובפאק לוקח אוסף של קבצים (מודולים) וממיר אותם לקובץ אחד (או מספר קבצים תלוי בקונפיגורציה שתגדירו), וובפאק יקווץ את הקבצים השונים לסורס אחד מוכן לפעולה. וובפאק דואג לנהל את הdependencies כך שהקוד ירוץ ללא בעיות. אם ניכנס קצת יותר לעומק של וובפאק, אפשר לעשות המון שימושים סביב היכולות של וובפאק, למשל:
ניהול קבצי תמונה, קבצי סטיילינג כגון scss ,css , פונטים ועוד.. וזה נעשה בעזרת loaders
כמו כן שימושים רבים בוובפאק תמצאו בהמון סביבות או ספריות נפוצות כמו ריאקט , אנגולר, וויו ואחרים..

שימוש קלסאי שאולי חלקכם ראיתם הוא בסגנון הבא:

לפני שימוש בוובפאק ככל הנראה תצטרכו לטעון קבצים רבים ולשמור על סדר הטעינה שלהם וזה נראה כך:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    ...
  </head>
  <body>
    ...
    <script src="app.js"></script> 
    <script src="doSometing.js"></script>
    <script src="doSometingOne.js"></script>
	<script src="doSometingTwo.js"></script>
    <script src="doSometingThree.js"></script>
  </body>
</html>

לאחר שימוש בוובפאק תקבלו סורס אחד . וזה יראה כך:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    ...
  </head>
  <body>
    ...
    <script src="dist/bundle.js"></script>
  </body>
</html>

2.איך משתמשים בwebpack

אציג פה דוגמה בסיסית כיצד משתמשים. בשביל להתחיל ולעבוד עם webpack צריך לעשות כמה פעולות פשוטות והן:

  1. תפתחו פרויקט חדש ותריצו
    npm init
  2. התקינו webpack . יש להתקין 2 ספריות webpack webpack-cli :
    npm install webpack webpack-cli
  3. צרו קובץ (בסמוך לpackage.json) שנקרא :
    webpack.config.js

עכשיו נוכל לעשות כל מיני שימושים נפוצים בעזרת וובפאק שככל הנראה יעזרו לכם מאד בעבודה מכוון שהמון פרויקטים בתעשייה (פרונט אנד) מממשים וובפאק.

Entry and Output

בשביל שוובפאק יוכל לעשות את עבודתו הוא מבקש מאיתנו שנגדיר לו נקודת כניסה entry point ונקודת יציאה end Point: output:

module.exports = {
    entry: "./app/index.js",
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }
};

אפשר לראות בדוגמה שנקודת הכניסה פשוטה להגדרה אך נקודת היציאה היא אובייקטי , המקבל path כלומר איפה תרצו למקם את הקבצים שוובפאק מייצר, אז dirname__ בוחר את המיקום של הקובץ הנוכחי דייהנו התיקיה הראשית, ושמה הוא יפתח תיקיה חדשה בשם שתבחרו, הקונבנציה הקלאסית היא dist

נגדיר את זה כך:

Loaders, Rules, Plugins, Mode

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

module.exports = {
    entry: "./app/index.js",
    module: {
        rules:[
            {test: /\.svg$/, loader: 'svg-inline-loader'},
            {test: /\.scc$/, use: ['style-loader', 'css-loader']},
            {test: /\.(js)$/, use: 'babel-loader'},
        ]
    },
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }, 
};

Rules & Loaders

שימוש ב loaders דורש להתקינם לפני הכל. בשביל לממש את הדוגמה נצטרך להתקין את הלואדרים הבאים כך:

npm install svg-inline-loader --save-dev
npm install style-loader --save-dev 
npm install css-loader --save-dev 
npm install babel-loader @babel/core @babel/preset-env --save-dev

אם האפליקציה שלכם מכילה קבצי SVG , CSS , JS babel וחשוב לכם שוובפאק יטפל בהם. יהיה עליכם להגדיר rules עבורם. כמו כן יהיה עלכם להתקין loaders. שידעו לטפל בקבצים אלו. בתוך המערך של הrules יהיה עליכם להוסיף אובייקט שיכול להכיל ערכים שונים, הנפוצים ביותר הם:

  1. test – שמקבל ערך regex שיודע לחפש את כל הקבצים מהסוג הספציפי.
  2. use\loader – שם של הloader שהתקנתם . use יותר נפוץ וכן יכול לקבל גם מערך של loaders – בדוגמה שמתי שימוש בשניהם אבל מומלץ לשמור על אחידות . לרוב משתמשים בuse.

Plugins

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

npm install –save-dev html-webpack-plugin

הפלאגין הזה יגנרט עבורכם את הhtml ויכלול את הקובץ (או הקבצים) שיוצרו בעזרת וובפאק. השימוש הוא מאוד פשוט. אפשר לראות בדוגמה:

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: "./app/index.js",
    module: {
        rules:[
            {test: /\.svg$/, loader: 'svg-inline-loader'},
            {test: /\.scc$/, use: ['style-loader', 'css-loader']},
            {test: /\.(js)$/, use: 'babel-loader'},
        ]
    },
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }, 
    plugins: [new HtmlWebpackPlugin()],
};

Mode

מוד מאפשר לנו להגדיר סביבות שונות בעזרת וובפאק. למשל סביבת development וסביבת production
בשביל להוסיף סביבה יהיה עלינו גם להגדיר בקובץ package כמה דברים .נתחיל בקובץ הוובפאק

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');

module.exports = {
    entry: "./app/index.js",
    module: {
        rules:[
            {test: /\.svg$/, loader: 'svg-inline-loader'},
            {test: /\.scc$/, use: ['style-loader', 'css-loader']},
            {test: /\.(js)$/, use: 'babel-loader'},
        ]
    },
    output: {
        path: path.resolve(__dirname, "dist"),
        filename: "bundle.js"
    }, 
    plugins: [new HtmlWebpackPlugin()],
    mode: process.env.NODE_ENV === "production" ? "production" : "development"
};

לאחר שהגדרנו את הסביבה בקובץ הוובפאק יהיה עלינו לשנות בpackage כמה ההסקריפטים .

נגדי כעת את הפקודות השונות בהרצת הפרויקט והבדלה בין הסביבות כך שנרצה להריץ את הפרויקט בסביבת הפיתוח נבחר להריץ npm run start ובסביבת הייצור נריץ npm run build. לפני שניגש לקובץ הpackage נרצה להתקין את :

npm install webpack-dev-server --save-dev

שייקל עלינו בעבודה עם סביבת הפיתוח. ב localhost:8080

להלן קובץ ה package.json :

{
  "name": "hitesh_choudhary_crash_course",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "webpack serve",
    "build": "SET NODE_ENV='production'& webpack",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.14.2",
    "@babel/preset-env": "^7.14.2",
    "babel-loader": "^8.2.2",
    "css-loader": "^5.2.4",
    "html-webpack-plugin": "^5.3.1",
    "style-loader": "^2.0.0",
    "svg-inline-loader": "^0.8.2",
    "webpack": "^5.37.0",
    "webpack-cli": "^4.7.0",
    "webpack-dev-server": "^3.11.2"
  }
}

וסיימנו! . למעשה עוד לא סיימנו. זוכרים את נקודת הכניסה? יהיה עלינו לייצר תיהיה בשם app ולייצר בה קובץ index.js שממנו הכל מתחיל.

להלן תמונה של הקבצים שלי , אפשר לראות שיש לי תיקיה של app אם קובץ index.js יצרתי עוד קובץ נוסף שעוד מעט אראה לכם סתם לדוגמה בשביל לוודא שוובפאק עושה את עבודותו נאמנה.

הקבצים שיצרתי לצורך הדוגמה הם:

export const hello ="hello";
import {hello} from './somejscode.js';

const welcome = `${hello} Codcodile`;

console.log(welcome);

אחרי שיצרתי את הקבצים הללו הרצתי את הפקודה של npm run build ולמעשה קיבלתי קצבים מג'ונרטים בתיקיה dist. את תיקיה dist ככה שקיבלתם אפשר לעלות לפרודקשן.

3. שימושים נפוצים בתעשיה

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

בהצלחה! 🐱‍🐉

פוסטים קשורים:

תקלה בריאקט בקינפוג עם sassבעיות נפוצות ב-react | קינפוג עם sass תמונת אווירה של מבוךהגדרה בסיסית לאנגולר ראוטינג SVG Animation לאנימציה ב-SVGSVG Animation – טריק נחמד ויעיל לאנימציה ב-SVG מדריך וורדפרס למתכנתים שיעור שלישי - סוגי משתמשים והרשאות בוורדפרסקורס בניית אתרים בוורדפרס – סוגי משתמשים והרשאות בוורדפרס
webpack וובפאק מדריך webpack

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד