npm, package.json та інструменти розробки

npm та package.json

📖 Теорія

npm (Node Package Manager) — менеджер пакетів для Node.js/JavaScript.
Ініціалізація проєкту:

💡 Приклад коду
Вивід:

                            
📝 ЗАВДАННЯ (3)
1.
Завдання 1: Семантичне версіонування
10 XP
Semver (Semantic Versioning): MAJOR.MINOR.PATCH

Виведи що означають ці версії у package.json:
"^4.18.2", "~4.18.2", "4.18.2", ">=4.0.0"

Виведи 4 рядки з поясненням кожного.
💡 Підказка: ^ — сумісні зміни (minor/patch), ~ — тільки patch, без символу — точна версія
🔓 Розв'язок:
console.log('^4.18.2  — будь-яка 4.x.x де x >= 18.2 (minor і patch)');
console.log('~4.18.2  — тільки 4.18.x (тільки patch)');
console.log('4.18.2   — точно 4.18.2 (фіксована)');
console.log('>=4.0.0  — 4.0.0 або новіше');
Вивід:

                                

2.
Завдання 2: npm scripts
20 XP
Поясни що роблять ці npm-скрипти:
1. "start": "node server.js"
2. "dev": "nodemon --watch src server.js"
3. "build": "tsc && node dist/index.js"
4. "test:watch": "jest --watchAll"

Виведи пояснення кожного.
💡 Підказка: Просто console.log кожне пояснення
🔓 Розв'язок:
console.log('start — запускає сервер через Node.js в production');
console.log('dev — запускає з nodemon, автоперезапуск при зміні src/');
console.log('build — компілює TypeScript і запускає результат');
console.log('test:watch — запускає Jest в режимі спостереження за змінами');
Вивід:

                                

3.
Завдання 3: Модульна система
30 XP
Демонстрація CommonJS vs ESM:

Напиши CommonJS модуль (в пам'яті) — функції add, subtract, multiply.
Затем 'імпортуй' їх (деструктуруй з об'єкта) і виведи результати:
add(10, 5) = 15
subtract(10, 5) = 5
multiply(10, 5) = 50
💡 Підказка: Замість реального require симулюй module.exports як об'єкт і деструктуруй
🔓 Розв'язок:
// Симуляція CommonJS модуля без файлів
const mathModule = {
  add: (a, b) => a + b,
  subtract: (a, b) => a - b,
  multiply: (a, b) => a * b
};
// module.exports = mathModule;

// const { add, subtract, multiply } = require('./math');
const { add, subtract, multiply } = mathModule;

console.log(`add(10, 5) = ${add(10, 5)}`);
console.log(`subtract(10, 5) = ${subtract(10, 5)}`);
console.log(`multiply(10, 5) = ${multiply(10, 5)}`);
Вивід: