Что такое npm — и почему одна команда тянет тысячи чужих файлов

Смотри, штука, которая пугает новичков: пишешь npm install, жмёшь Enter — и в проект приезжает папка node_modules на тысячи файлов, которые ты в жизни не открывал. Откуда они? Кто их написал? И почему их так много ради одной маленькой библиотеки?
Разберёмся — потому что npm ты встретишь в первый же вечер, когда возьмёшься собирать что-то на Node.js. И понимать, что там едет, полезно и для удобства, и для безопасности.
Что такое npm в одной фразе
npm — это склад готового кода для JavaScript плюс команда, которая этот код ставит в твой проект. Расшифровывается как Node Package Manager — менеджер пакетов для Node.
Каждый кусок чужого кода на этом складе называется пакет (по сути — библиотека). Хочешь отправлять письма из приложения, крутить даты или рисовать графики — не пишешь это с нуля, а ставишь готовый пакет одной строкой.
Как это работает
Три вещи, которые стоит знать.
- Реестр. Где-то в облаке лежит гигантский открытый склад — реестр npm, больше двух миллионов пакетов. Команда
npm install имя-пакетаидёт туда, скачивает нужное и кладёт в папкуnode_modules. - package.json — список покупок. В корне проекта живёт файл
package.json. В нём перечислено, какие пакеты и каких версий нужны. Отдал другу проект безnode_modules— он делаетnpm install, npm читает список и восстанавливает всё точь-в-точь. - Пакеты тянут пакеты. Вот откуда тысячи файлов. Ты ставишь один пакет, а он внутри опирается на десять других, те — ещё на десяток. npm тихо докачивает всю цепочку. Это зависимости зависимостей.
Ещё увидишь у версий значки вроде ^1.4.0. Это правила обновления: цифры разбиты на «большое.среднее.мелкое», и такая запись разрешает подтягивать мелкие правки, но не ломающие большие. Пока просто знай, что версии тут не случайные.
Почему это и удобно, и рискованно
Удобство очевидно: ты стоишь на плечах тысяч людей и не переписываешь то, что уже написано и отлажено. Собрать рабочее приложение за вечер реально во многом благодаря npm.
Но есть и обратная сторона, о которой молчат туториалы: ты запускаешь у себя код совершенно незнакомых людей. Тот самый пакет, который тянет ещё сотню пакетов, — это сотня авторов, которым ты по факту доверяешь. Иногда среди них попадается заброшенный пакет с дырой в безопасности или, реже, специально вредный.
Отсюда пара здоровых привычек с самого начала:
- Не ставь пакет ради одной строчки, которую напишешь сам за минуту.
- Смотри на пакет перед установкой: когда обновлялся, сколько его качают. Живой и популярный — безопаснее заброшенного.
- Файлы
package.jsonиpackage-lock.jsonдержи в проекте, аnode_modules— нет: её всегда можно восстановить командойnpm install.
npm — это не «программирование», это логистика. Ты не пишешь код пакетов, ты решаешь, какие готовые куски впустить в проект. Половина работы разработчика сегодня — именно такой осознанный выбор.
Что делает npm install?
Читает package.json, идёт в реестр, скачивает все перечисленные пакеты вместе с их зависимостями и складывает в папку node_modules. После этого твой проект готов запускаться.
npm — это то же самое, что Node.js?
Нет, но они ходят парой. Node.js запускает JavaScript вне браузера, а npm ставится вместе с ним и достаёт для него готовые пакеты. Node — двигатель, npm — служба доставки запчастей.
Нужен ли интернет для npm install?
Для первой установки — да, пакеты качаются из реестра. Дальше npm кеширует скачанное, так что повторные установки часто проходят и без сети. Если npm install внезапно падает — почему так бывает, разбираем в отдельном материале.
npm — это суперсила и ответственность в одной команде. Понимаешь, что именно приезжает в node_modules, — и перестаёшь бояться этой папки, но начинаешь смотреть, что в неё кладёшь. А собрать первый проект, где npm работает на тебя, проще в компании того, кто объясняет на «ты».
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





