Урок 02

Установка и первый проект

Что понадобится

  • Node.js LTS (22 или 20).
  • npm — идёт с Node.js.
  • Редактор — VS Code.
  • Терминал — bash, zsh, PowerShell.

Установка через nvm

nvm — Node Version Manager. Позволяет держать несколько версий.

Linux / macOS:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

Или через brew (macOS):

brew install nvm

Перезапустить терминал, проверить:

nvm --version

Установить Node.js:

nvm install 22
nvm use 22
nvm alias default 22

Проверка:

node -v
# v22.10.0
npm -v
# 10.9.0

Установка на Windows

Вариант 1: nvm-windows

Вариант 2: официальный установщик

Вариант 3: WSL2 + Ubuntu

  • Как на сервере. Лучший вариант для разработки.

Установка на macOS

brew install nvm
nvm install 22
nvm use 22

Или через fnm — более быстрый:

brew install fnm
fnm install 22

Первый проект

Создать папку:

mkdir my-app
cd my-app

Инициализировать npm:

npm init -y

Появится package.json:

{
    "name": "my-app",
    "version": "1.0.0",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "keywords": [],
    "author": "",
    "license": "ISC"
}

Первый скрипт

Создай index.js:

console.log('Привет, Node.js!');
console.log('Версия:', process.version);
console.log('Платформа:', process.platform);

Запусти:

node index.js

Вывод:

Привет, Node.js!
Версия: v22.10.0
Платформа: linux

Скрипты в package.json

Добавь в package.json:

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

Запуск:

npm start
npm run dev

--watch — автоматический перезапуск при изменении файла.

Структура проекта

my-app/
├── src/
│   └── index.js
├── .gitignore
├── package.json
└── README.md

.gitignore:

node_modules/
.env
*.log

node_modules — никогда не коммитить.

Установка пакетов

npm:

npm install express
npm install --save-dev nodemon

Появится node_modules/ — здесь живут все зависимости.

package.json:

{
    "dependencies": {
        "express": "^5.0.0"
    },
    "devDependencies": {
        "nodemon": "^3.1.0"
    }
}

package-lock.json — фиксирует точные версии. Коммитить.

Типы зависимостей

  • dependencies — для прода.
  • devDependencies — для разработки (линтеры, тесты, сборщики).
  • peerDependencies — для плагинов и библиотек.
  • optionalDependencies — не критичные.

npm vs yarn vs pnpm

npmyarnpnpm
СкоростьСреднеБыстроОчень быстро
ДискМногоМногоЭкономия
СовместимостьПолнаяПолнаяПолная
По умолчаниюДаНетНет

Начинающим — npm. В командах — pnpm.

Node.js vs npx

npx — запуск пакетов без установки:

npx create-vite@latest my-app
npx prettier --write .

Полезно для одноразовых команд.

Переменные окружения

.env:

NODE_ENV=development
PORT=3000
API_KEY=secret

Чтение:

console.log(process.env.NODE_ENV);
console.log(process.env.PORT || 3000);

До Node.js 20.6 — только через dotenv. Сейчас — встроенный --env-file:

node --env-file=.env index.js

Полезные команды

node index.js               # запуск файла
node --watch index.js       # автоперезапуск
node -e "console.log('hi')" # выполнить строку
node --version              # версия
node --help                 # помощь
npm install                 # установить зависимости
npm install <pkg>           # добавить пакет
npm install -D <pkg>        # dev-зависимость
npm uninstall <pkg>         # удалить
npm update                  # обновить
npm run <script>            # запустить скрипт
npm ls                      # дерево зависимостей
npm audit                   # проверка уязвимостей

Первый HTTP-сервер

index.js:

import http from 'node:http';

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end('Привет из Node.js!');
});

server.listen(3000, () => {
    console.log('Сервер: http://localhost:3000');
});

Запуск:

node index.js

Открой http://localhost:3000.

Практика

// index.js

const name = process.argv[2] || 'гость';
const time = new Date().toLocaleString('ru');

console.log(`Привет, ${name}!`);
console.log(`Сейчас: ${time}`);
console.log(`Node.js: ${process.version}`);
console.log(`Платформа: ${process.platform}`);

Запуск:

node index.js Иван

Вывод:

Привет, Иван!
Сейчас: 15.10.2026, 14:30:00
Node.js: v22.10.0
Платформа: linux

Итог

  • nvm — управление версиями.
  • npm init -y — создать проект.
  • package.json — манифест.
  • node_modules/ — зависимости, не в git.
  • npm install — установка.
  • Скрипты — в package.json.
  • --watch — автоперезапуск.
  • .env — переменные окружения.

Дальше — модули: CommonJS и ESM.