כלים מובנים של Node.js מודרני

עד לפני כמה שנים, כמעט כל פרויקט Node.js התחיל בהתקנה של nodemon, dotenv, ספריית בדיקות ו-node-fetch. היום כל אלה מובנים ב-Node.js עצמו. השיעור מרכז את מה שכדאי להכיר ב-2026.

גרסה: כל מה שכאן עובד בגרסת LTS עדכנית (Node.js 22 ומעלה). בדקו עם node --version.

--watch: הרצה מחדש בכל שמירה

node --watch server.js

Node.js מריץ את הקובץ מחדש בכל פעם ששומרים אותו או קובץ שהוא מייבא. זה מחליף את nodemon. נוח להגדיר ב-package.json:

{
  "scripts": {
    "dev": "node --watch server.js",
    "start": "node server.js"
  }
}

--env-file: משתני סביבה מקובץ

סיסמאות, מפתחות API וכתובת מסד הנתונים לא נכתבים בקוד. שמים אותם בקובץ .env (שלא עולה ל-Git!):

# .env
PORT=3000
DATABASE_URL=mysql://root:secret@localhost:3306/shop
API_KEY=abc123
node --env-file=.env server.js
const port = Number(process.env.PORT) || 3000;
const apiKey = process.env.API_KEY;

if (!apiKey) {
    throw new Error('חסר API_KEY בקובץ .env');
}

זה מחליף את חבילת dotenv. כל הערכים ב-process.env הם מחרוזות, ולכן Number(...) על מספרים. אפשר לשלב: node --watch --env-file=.env server.js.

fetch מובנה

const response = await fetch('https://api.example.com/items', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ name: 'עט' }),
});

if (!response.ok) {
    throw new Error(`הבקשה נכשלה: ${response.status}`);
}
const created = await response.json();

אותו fetch שלמדתם בקורס JavaScript, בלי node-fetch ובלי axios.

node:test: בדיקות בלי ספרייה

// math.test.js
import { test } from 'node:test';
import assert from 'node:assert/strict';
import { add } from './math.js';

test('חיבור של שני מספרים', () => {
    assert.equal(add(2, 3), 5);
});

test('חיבור עם אפס', () => {
    assert.equal(add(7, 0), 7);
});
# מוצא ומריץ את כל קובצי *.test.js
node --test

לפרויקטים גדולים עדיין בוחרים לפעמים ב-Vitest או Jest, אבל לפרויקט קטן או לספרייה, node:test מספיק לגמרי.

להריץ TypeScript ישירות

מגרסה 22.18 (ומ-23.6 ואילך) Node.js מריץ קובצי .ts בלי שלב קומפילציה: הוא פשוט "מוחק" את הטיפוסים ומריץ את ה-JavaScript שנשאר.

node app.ts

שימו לב: Node.js לא בודק את הטיפוסים, רק מסיר אותם. לבדיקה אמיתית עדיין מריצים tsc. על כל זה בהרחבה בקורס TypeScript.

עוד כמה שכדאי להכיר

כלימה הוא עושה
node --run devמריץ script מ-package.json, מהר יותר מ-npm run
import.meta.dirnameהתיקייה של הקובץ הנוכחי ב-ES Module (במקום __dirname)
structuredClone(obj)העתקה עמוקה של אובייקט
crypto.randomUUID()מזהה ייחודי, בלי חבילת uuid
util.parseArgsקריאת ארגומנטים משורת הפקודה לכלי CLI

שלד פרויקט מומלץ

{
  "name": "my-app",
  "type": "module",
  "engines": { "node": ">=22" },
  "scripts": {
    "dev": "node --watch --env-file=.env src/server.js",
    "start": "node src/server.js",
    "test": "node --test"
  }
}
.gitignore
node_modules/
.env

עם השלד הזה אתם מוכנים ל-קורס Express.

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה מחליף את nodemon ב-Node.js מודרני?

    1. npm watch
    2. node --watch
    3. node --restart
    4. אין תחליף
    הצגת התשובה

    תשובה ב. --watch מריץ מחדש בכל שמירה.

  2. מה עושה node --env-file=.env server.js?

    1. טוען את המשתנים מהקובץ ל-process.env, במקום חבילת dotenv
    2. מצפין את הקובץ
    3. יוצר קובץ .env
    4. מוחק את .env
    הצגת התשובה

    תשובה א. זכרו: .env תמיד ב-.gitignore.

  3. מה מריץ node --test?

    1. בדיקת טיפוסים
    2. את השרת
    3. את קובצי הבדיקות עם מריץ הבדיקות המובנה node:test
    4. npm audit
    הצגת התשובה

    תשובה ג. מריץ בדיקות בלי להתקין Jest או Mocha.