npm

простою мовою, без припущень про ваш досвід

npm – це інструмент, який приносить і впорядковує готові будівельні блоки, що їх ваш проєкт позичає в інших. Майже кожен сучасний вебпроєкт спирається на частини, які написали й роздали інші люди; npm іде й збирає рівно ті з них, яких потребує ваш проєкт, у потрібних версіях, однією командою.

Ніхто не будує сучасний сайт цілком з нуля – так само, як кухар не меле собі борошно сам і не тисне власну олію. Існує величезна щедра спільна комора будівельних блоків – маленьких частин програм, які інші люди написали й роздали задарма, – і майже кожен проєкт з неї позичає. npm – це помічник, який іде до тієї комори й приносить рівно ті складники, яких просить ваш проєкт.

Ви зустрінете npm тієї ж миті, коли візьметеся до більшості вебпроєктів. Це настільки буденна річ, що щойно ви розумієте, що саме він робить, – таємниця одразу спадає.

Для чого він насправді

Проєкт зазвичай має при собі невеликий список покупок – звичайний файл, у якому написано: «цьому проєктові потрібні ось такі частини, ось таких версій». Ви не пишете кожну частину самі; ви просто просите npm прочитати список і зібрати все, що в ньому є. Одна команда:

npm install

Саме її ви запускатимете найчастіше. Вона читає список покупок проєкту й приносить кожен названий у ньому будівельний блок, складаючи їх у теку, щоб проєкт міг ними скористатися. Коли ви вперше відкриваєте більшість проєктів, це найперше, що ви робите: саме так тека з кодом стає річчю, яка справді може працювати.

Куди діваються ці частини і що це за тека «node_modules»?

Коли npm усе приносить, він складає це в теку під назвою node_modules. Виглядати може лячно – іноді там з’являються тисячі файлів! – але боятися нічого: це просто комора, наповнена запасами. Це всі позичені будівельні блоки (і блоки, на які спираються вони самі), зібрані в одному місці, щоб ваш проєкт міг з них черпати.

Ви ніколи не редагуєте цю теку руками й не бережете її назавжди: якщо вона колись загубиться чи буде видалена, одна команда npm install відбудує її зі списку покупок. Саме тому ніхто навіть не завдає собі клопоту робити її резервну копію: правда – у списку, а тека – це просто список, принесений із комори.

Друга команда, яку ви зустрінете

Проєкти також тримають невеликий набір іменованих скорочень для звичних справ – «зібрати сайт», «запустити для перевірки», – і їх ви теж запускаєте через npm:

npm run build

Хоч би як проєкт назвав свої задачі, npm run something – це те, чим ви їх запускаєте. (Можливо, ви бачили npm run deploy в історії про Cloudflare – та сама ідея: іменоване скорочення, яке визначив проєкт і яке запускають через npm.) Не треба їх запам’ятовувати: нотатки проєкту підкажуть вам, які саме він пропонує.

«node», «yarn», «pnpm» – це те саме?

Ви бачитимете цих сусідів, тож про кожного варто сказати коротке заспокійливе слово:

  • Node (або Node.js) – це рушій, який виконує такий код поза браузером; npm іде разом із ним, і саме тому, встановивши одне, ви отримуєте й інше.
  • yarn і pnpm – це просто альтернативні інструменти, які роблять роботу npm: приносять будівельні блоки, іноді швидше чи охайніше. Якщо проєкт користується одним із них, дух той самий; змінюється лише назва команди (yarn install, pnpm install).

Отже, це не нові світи, які треба вивчати, – просто інші двері до тієї самої комори.

Отже, одним подихом

npm – це помічник, який читає список покупок вашого проєкту з позичених будівельних блоків і приносить їх усі командою npm install, а ще запускає іменовані задачі проєкту через npm run; це той буденний перший крок, що перетворює теку з кодом на щось, яке справді працює, черпаючи з величезної спільної комори, на якій щасливо стоїть уся сучасна вебробота.