4.9 Node.js, npm וכלי פיתוח תרגול
תרגול - Node.js, npm וכלי פיתוח¶
תרגיל 1 - סקריפט Node.js¶
כתבו סקריפט Node.js שמקבל ארגומנטים משורת הפקודה ומבצע פעולות:
א. קובץ calc.js שמקבל שני מספרים ופעולה:
node calc.js 10 + 5 # 15
node calc.js 10 - 3 # 7
node calc.js 10 x 5 # 50 (use x instead of * to avoid shell issues)
node calc.js 10 / 3 # 3.33
ב. קובץ fileinfo.js שמקבל נתיב לקובץ ומדפיס מידע עליו:
node fileinfo.js package.json
# File: package.json
# Size: 324 bytes
# Created: 2026-03-08
# Lines: 15
רמז: השתמשו ב-fs ו-path (מודולים מובנים של Node).
תרגיל 2 - פרויקט npm מאפס¶
בנו פרויקט npm מלא מאפס:
א. אתחלו פרויקט חדש עם npm init -y.
ב. התקינו את החבילות הבאות:
- dayjs - לעבודה עם תאריכים
- chalk - להדפסה צבעונית בטרמינל (גרסה 4: npm i chalk@4)
- eslint ו-prettier כ-dev dependencies
ג. כתבו קובץ index.js שמשתמש ב-dayjs ו-chalk:
node index.js
# prints current date in a nice format with colors
# prints "X days until new year" in green
# prints a countdown of the last 5 days of the week in yellow
ד. הוסיפו סקריפטים ל-package.json:
ה. צרו קובץ .gitignore עם node_modules/.
תרגיל 3 - פרויקט Vite¶
צרו פרויקט Vite מאפס ובנו בו אפליקציה פשוטה:
א. צרו פרויקט חדש:
ב. בנו אפליקציית TODO פשוטה בקבצים הקיימים (src/main.js, src/style.css, index.html):
- שדה טקסט והוספת משימה
- הצגת רשימת משימות
- סימון משימה כהושלמה
- מחיקת משימה
- שמירה ב-localStorage
ג. הוסיפו משתנה סביבה:
- צרו קובץ .env עם VITE_APP_TITLE=My Todo App
- השתמשו בו בקוד להצגת כותרת האפליקציה
ד. הריצו npm run build ובדקו את תיקיית dist/.
תרגיל 4 - הגדרת ESLint ו-Prettier¶
הגדירו ESLint ו-Prettier בפרויקט Vite שיצרתם:
א. התקינו את החבילות הנדרשות:
ב. צרו הגדרות ESLint (eslint.config.js):
- אסרו שימוש ב-var
- חייבו === במקום ==
- אזהרה על משתנים שלא בשימוש
- אפשרו console.log
ג. צרו הגדרות Prettier (.prettierrc):
- נקודה-פסיק בסוף שורה
- מרכאות כפולות
- 4 רווחים לטאב
- רוחב שורה מקסימלי 100
ד. הוסיפו סקריפטים ל-package.json:
{
"scripts": {
"lint": "eslint src/",
"lint:fix": "eslint src/ --fix",
"format": "prettier --write src/"
}
}
ה. כתבו קוד עם כמה "שגיאות" מכוונות (var, ==, משתנים לא בשימוש) והריצו lint כדי לראות את השגיאות.
תרגיל 5 - ניהול תלויות¶
תרגלו ניהול תלויות עם npm:
א. התקינו את החבילות axios, lodash, ו-uuid. בדקו מה נוסף ל-package.json.
ב. הסירו את axios (npm uninstall axios). בדקו שנמחק מ-package.json ומ-node_modules.
ג. מחקו את תיקיית node_modules (rm -rf node_modules) והריצו npm install. בדקו שהכל חזר.
ד. כתבו סקריפט שמשתמש ב-lodash ו-uuid:
import { v4 as uuidv4 } from "uuid";
import _ from "lodash";
// generate 5 random IDs
const ids = _.times(5, () => uuidv4());
console.log(ids);
// use lodash utilities
const data = [1, 2, 2, 3, 3, 3, 4];
console.log("Unique:", _.uniq(data));
console.log("Chunk:", _.chunk(data, 3));
ה. בדקו אילו חבילות מיושנות עם npm outdated.
תרגיל 6 - Vite מתקדם¶
הרחיבו את פרויקט Vite:
א. הגדירו alias ב-vite.config.js כך ש-@ מצביע על תיקיית src/:
import { resolve } from "path";
// in defineConfig:
resolve: {
alias: {
"@": resolve(__dirname, "src")
}
}
ב. פצלו את הקוד למודולים:
src/
main.js
modules/
storage.js # localStorage functions
ui.js # DOM manipulation functions
utils.js # utility functions
style.css
ג. השתמשו ב-import עם alias:
import { saveData, loadData } from "@/modules/storage";
import { createTodoElement } from "@/modules/ui";
ד. צרו קבצי .env.development ו-.env.production עם ערכים שונים, והשתמשו בהם בקוד.
ה. הריצו npm run build ובדקו את גודל הקבצים בתיקיית dist/.