npm install: как установить пакет
npm — менеджер пакетов Node.js: он скачивает библиотеки из общего каталога npm и следит за их версиями. Ставится вместе с Node.js. Чтобы установить пакет, перейдите в терминале в папку проекта командой cd (как — в уроке Первая программа: где запускать JavaScript) и выполните:
npm init -y
npm install lodashПервая команда (один раз на проект) создаёт файл package.json — описание проекта. Вторая скачивает пакет lodash и записывает его в package.json. Короткая форма npm install — npm i.
Теперь пакет можно подключить в коде, например в файле index.js:
const _ = require("lodash");
console.log(_.chunk([1, 2, 3, 4, 5], 2));Команда node index.js выведет [ [ 1, 2 ], [ 3, 4 ], [ 5 ] ] — массив, разбитый на части по два элемента.
Что появилось в папке
package.json— название проекта и список зависимостей (dependencies) с допустимыми версиями.package-lock.json— точные версии всех установленных пакетов, включая зависимости зависимостей. Благодаря ему на другом компьютере ставятся ровно те же версии.node_modules— сами файлы пакетов. Папка бывает большой; её не копируют и не кладут в git (добавьте в.gitignore), а восстанавливают командойnpm install.
Основные команды
| Команда | Что делает |
|---|---|
npm install | ставит все пакеты из package.json (после скачивания чужого проекта) |
npm install пакет | ставит пакет и добавляет в dependencies |
npm install -D пакет | ставит пакет для разработки (devDependencies): тесты, сборщики |
npm install пакет@2.1.0 | ставит указанную версию |
npm uninstall пакет | удаляет пакет из проекта |
npm update | обновляет пакеты в пределах версий из package.json |
npm ci | чистая установка строго по package-lock.json — для серверов и сборок |
npm run имя | запускает скрипт из раздела scripts в package.json |
npx программа | запускает программу из пакета, не устанавливая его в проект |
Скрипты в package.json — короткие имена для длинных команд:
{
"scripts": {
"start": "node index.js"
}
}После этого npm start (или npm run start) запускает node index.js.
require или import
Пакет подключают двумя способами:
const _ = require("lodash");— так написано в примерах выше, это способ CommonJS.import _ from "lodash";— способ модулей (ES modules). Он работает, если вpackage.jsonесть строка"type": "module"или у файла расширение.mjs.
Некоторые пакеты в новых версиях написаны только как модули. Старые версии Node.js на require такого пакета выдают ошибку ERR_REQUIRE_ESM — тогда переходите на import или обновите Node.js до свежей LTS.
Глобальная установка
npm install -g пакет ставит программу для всей системы, а не в проект. Нужно это редко: для одноразового запуска есть npx, а инструменты проекта лучше ставить в сам проект через -D — тогда у всех, кто с ним работает, одна и та же версия.
В Linux и macOS не запускайте sudo npm install -g. sudo даёт установке чужого пакета права администратора на всю систему, а часть файлов npm может остаться во владении root — дальше ошибки прав только множатся. Если обычная глобальная установка выдаёт EACCES, поставьте Node.js через nvm — тогда всё лежит в вашей домашней папке.
Частые ошибки
ENOENT…package.json— команда запущена не в папке проекта. Перейдите в неё (cd) или создайте проект:npm init -y.EACCES(permission denied) — нет прав на папку, обычно при-gв Linux. Решение — выше.ERESOLVE unable to resolve dependency tree— пакеты требуют несовместимые версии друг друга. Обновите пакет, из-за которого конфликт, или поставьте подходящую ему версию. Ключ--legacy-peer-depsобходит проверку, но конфликт остаётся — пользуйтесь им, только понимая, что именно пропускается.- В PowerShell — «выполнение сценариев отключено» — решение в справке Как установить Node.js.
Перед установкой незнакомого пакета посмотрите его страницу в каталоге npm: сколько у него загрузок, когда обновлялся, совпадает ли имя с нужным до буквы. Злоумышленники публикуют пакеты с именами, похожими на популярные.