Backend Typescript 1.0.0 Help

NPM

Суть

npm — это стандартный пакетный менеджер для Node.js, который решает три базовые задачи: хранение и распространение пакетов кода через регистр, управление зависимостями вашего проекта и выполнение проектных скриптов. Он позволяет вам устанавливать библиотеки, фиксировать их версии согласно семантическому версионированию, а также автоматизировать рутинные операции (сборка, тесты, линтинг).

Основные команды

  • npm init — интерактивно создаёт package.json. Быстрый вариант: npm init -y.

  • npm install (сокр. npm i) — устанавливает зависимости из package.json и обновляет package-lock.json. Без аргументов — установка всего; с именем пакета — установка конкретного.

  • npm uninstall (сокр. npm rm) — удаляет пакет и записывает изменение в package.json.

  • npm update — обновляет зависимости в рамках разрешённых диапазонов версий.

  • npm run <script> — запускает скрипт из секции scripts файла package.json.

  • npm test — алиас для npm run test.

  • npm exec (или npx) — запускает бинарь из зависимостей без глобальной установки.

  • npm outdated — показывает устаревшие пакеты и доступные версии (current, wanted, latest).

  • npm audit — ищет уязвимости в зависимостях; npm audit fix — пытается исправить автоматически.

  • npm ci — детерминированная установка по package-lock.json для CI. Удаляет каталог node_modules и ставит зависимости в точности как в lock-файле.

  • npm cache — управление локальным кэшем (см. раздел «Очистка кэша»).

  • npm config — чтение/запись настроек, эквивалентно правке .npmrc.

  • npm login, npm logout, npm whoami — аутентификация в реестре для публикации.

  • npm publish, npm deprecate — публикация и пометка версий пакета как устаревших.

  • npm link — локальная разработка пакетов через симлинки.

Инициализация проекта npm init -y Установка библиотеки как обычной зависимости npm i express Установка библиотеки как dev-зависимости (только для разработки) npm i -D typescript Запуск локально установленного бинаря без глобальной установки npx tsc --init Проверка устаревших пакетов npm outdated Детерминированная установка в CI npm ci

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

Локальная и глобальная установка

По умолчанию пакеты ставятся в каталог node_modules текущего проекта и записываются в package.json. Глобальная установка (npm i -g <pkg>) используется для инструментов командной строки, которые вы вызываете из любого каталога (например, npm сам установлен глобально).

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

  • dependencies — нужны в рантайме приложения (например, express).

  • devDependencies — нужны только в разработке (тесты, линтеры, сборщики).

  • peerDependencies — указывают совместимость с хост-пакетом (например, плагин требует react определённой версии, но не устанавливает его сам).

  • optionalDependencies — необязательные, их сбой установки не прерывает установку проекта.

Добавить обычную зависимость npm i axios Добавить dev-зависимость npm i -D vitest Добавить peer-зависимость вручную (npm покажет предупреждение, но ставит не будет) npm i react@^18

Форматы источников

npm поддерживает установку из реестра, по git-URL, с локального пути и из tarball-архива.

Установка из Git npm i git+https://github.com/user/repo.git Локальная установка из папки пакета npm i ../my-local-lib Установка из tarball npm i https://registry.npmjs.org/pkg/-/pkg-1.0.0.tgz

Отслеживание версий (SemVer)

npm следует SemVer: MAJOR.MINOR.PATCH (например, 2.5.1). Увеличение PATCH — исправления без изменения API, MINOR — новые обратносovместимые возможности, MAJOR — потенциально ломающие изменения.

Диапазоны версий

  • ^1.4.2 — разрешает обновления MINOR/PATCH (до <2.0.0).

  • ~1.4.2 — разрешает только PATCH (до <1.5.0).

  • >=1.2.0 <2 — явный интервал.

  • 1.4.2 — строгая фиксация конкретной версии.

  • Пре-релизы: 1.0.0-beta.1 — требуют явного указания.

{ "dependencies": { "express": "^4.19.0", "zod": "~3.23.8" } }

Lock-файлы

package-lock.json фиксирует точные версии, хеши и дерево зависимостей для воспроизводимых установок. В репозитории его следует коммитить.

  • npm install — может изменять lock-файл согласно диапазонам.

  • npm ci — строго следует lock-файлу, установка падает при несоответствии.

Очистка кэша

npm кэширует загруженные пакеты для ускорения последующих установок. Повреждённый кэш может приводить к ошибкам установки.

Проверка целостности кэша и вывод его пути npm cache verify Полная очистка кэша (требует --force) npm cache clean --force

.npmrc (конфигурация npm)

Файл .npmrc хранит настройки клиента npm на разных уровнях: глобально (в домашнем каталоге), локально (в корне проекта) и на уровне переменных окружения. Ключевые опции:

; Использовать собственный реестр (например, корпоративный) registry=https://registry.npmjs.org/ ; Складывать точные версии в package.json (без ^ и ~) save-exact=true ; Принудительная проверка движка Node.js engine-strict=true ; Авто-добавление node в PATH для скриптов на Windows scripts-prepend-node-path=true ; Уровень отчётности audit audit-level=high ; Отключить напоминания о финансировании fund=false ; Префикс для глобальных установок (избегайте sudo) prefix=${HOME}/.npm-global ; Авторизация для приватного реестра (используйте переменные окружения в CI) ; //registry.npmjs.org/:_authToken=${NPM_TOKEN} ; Настройки по скоупам @my-scope:registry=https://npm.my-company.local/

Работа с конфигом через команду

Прочитать значение npm config get registry Установить значение на уровне пользователя npm config set save-exact true Установить значение локально (в .npmrc проекта) npm config set engine-strict true --location=project

Практический минимум: от нуля до запуска

# 1) Инициализация проекта npm init -y 2) Добавляем зависимости npm i express 3) Добавляем dev-инструменты npm i -D typescript ts-node nodemon 4) Настраиваем скрипты (редактируем package.json вручную или через npm set-script) npm set-script dev "nodemon src/index.ts" npm set-script build "tsc -p tsconfig.json" npm set-script start "node dist/index.js" 5) Детерминированная установка в CI npm ci 6) Безопасность и обновления npm audit --production npm outdated
{ "name": "my-app", "version": "1.0.0", "type": "module", "scripts": { "dev": "nodemon src/index.ts", "build": "tsc -p tsconfig.json", "start": "node dist/index.js", "lint": "eslint .", "test": "vitest run" }, "engines": { "node": ">=20.0.0", "npm": ">=10.0.0" }, "dependencies": { "express": "^4.19.0" }, "devDependencies": { "typescript": "^5.6.0", "vitest": "^2.0.0" } }
Last modified: 01 October 2025