Ніхто не будує сучасний сайт цілком з нуля – так само, як кухар не меле собі борошно сам і не тисне власну олію. Існує величезна щедра спільна комора будівельних блоків – маленьких частин програм, які інші люди написали й роздали задарма, – і майже кожен проєкт з неї позичає. 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; це той буденний перший крок, що перетворює теку з кодом на щось, яке справді
працює, черпаючи з величезної спільної комори, на якій щасливо стоїть уся сучасна
вебробота.