Кожен JS-розробник, хто хоч раз використовував NPM, знає як мінімум про два типи залежностей – normal та dev. Незважаючи на те, що решта не користується такою високою популярністю, на практиці вони можуть стати незамінними. Тому важливо не просто знати про їхнє існування, але також вміти правильно та своєчасно застосовувати. Як саме — розглянемо у цій статті.
Нормальні залежності
Всі normal або runtime залежності від JavaScript перераховані в dependencies, в папці package.json. Як правило, вони вказують тільки назву ключа і версію (значення), після чого менеджер пакетів, наприклад це може бути NPM — бере їх із глобального реєстру.
При цьому вказувати точну версію залежності зовсім не обов'язково, натомість ви можете встановити:
- Зразкову версію. За допомогою операторів порівняння можна вказати не одну фіксовану, а одразу кілька версій — більшу чи меншу за конкретний номер. Наприклад, це може бути написано у форматі >1.32 або <=1.3.3. Також за допомогою оператора ~ можна встановлювати еквівалентну версію - "lodash": "~1.3.3". У такому разі завантажуватимуться лише патчі, що знаходяться в зоні між 1.3.3 та 1.4.0. Ще один варіант - це вказівка так званої сумісної версії, наприклад, "lodash": "^ 1.2.0". Цей спосіб застосовується, якщо ви хочете завантажувати версії, які не включатимуть критичні зміни.
- URL-адреса. Вам навіть не обов'язково вказувати версію, натомість можна послатися на конкретну URL-адресу, завантаживши таким чином потрібний модуль з іншого місця.
- Локальний файл. Також можна зіслатися на файл, розташований на жорсткому диску вашого пристрою. Це досить поширений варіант, особливо коли потрібно протестувати розроблену модель, перш ніж завантажувати його на NPM. Ви можете створити посилання на папку локального модуля за допомогою параметра локального файлу. При цьому, якщо на початку посилання стоїть префікс file://, ви можете використовувати не тільки повні, але й часткові шляхи.
У яких випадках слід застосовувати нормальні залежності
У звичайних залежностях міститься все, що необхідно для розробки проекту та не представлено жодним із існуючих модулів. Однак, якщо ваш проект - це і є модуль, тут виникає нюанс - при використанні такого модуля в інших пакетах, наприклад React, включати його в залежності не потрібно. У такому разі мається на увазі, що вона вже є.