Для швидкого читача : це ОК йде про package.json поле bundledDependencies, НЕ про пакеті .
Що роблять bundledDependencies
"bundledDependencies" - це саме те, що випливає з їх назви. Залежності, які мають бути всередині вашого проекту. Отже, функціональність в основному така ж, як і звичайні залежності. Вони також будуть упаковані під час бігу npm pack
.
Коли їх використовувати
Звичайні залежності зазвичай встановлюються з реєстру npm. Таким чином, пакетні залежності корисні, коли:
- ви хочете повторно використовувати сторонню бібліотеку, яка не походить з реєстру npm або яка була змінена
- ви хочете повторно використовувати власні проекти як модулі
- ви хочете поширити деякі файли разом із модулем
Таким чином, вам не потрібно створювати (і підтримувати) власне сховище npm, але отримувати ті самі переваги, що і ви отримуєте від пакетів npm.
Коли не використовувати пов'язані залежності
При розробці я не думаю, що головне - запобігати випадковим оновленням. Для цього ми маємо кращі інструменти, а саме сховища коду (git, mercurial, svn ...) або тепер блокуємо файли.
Щоб закріпити версії пакета, ви можете використовувати:
Варіант 1: Використовуйте новішу версію NPM 5, яка постачається з вузлом 8. Він використовує package-lock.json
файл (див. Блог вузлів та випуск вузла 8)
Варіант 2: використовувати пряжу замість npm
. Це менеджер пакетів з facebook, швидший за npm
і використовує yarn.lock
файл. В package.json
іншому випадку використовується те саме .
Це можна порівняти з файлами блокування в інших менеджерах пакетів, таких як Bundler або Cargo. Він схожий на npm-npm-shrinkwrap.json, проте він не втрачає і створює відтворювані результати.
npm
насправді скопіював цю функцію yarn
, серед іншого.
- Варіант 3: це був раніше рекомендований підхід, який я вже не рекомендую. Ідея полягала в тому, щоб використовувати
npm shrinkwrap
більшу частину часу, а іноді розміщувати все це, включаючи папку node_module, у ваше сховище коду. Або, можливо, використовувати термоусадочний пакет . Тоді найкращі практики обговорювались у блозі node.js та на веб-сайтах розробників радості .
Дивитися також
Це трохи поза сферою питання, але я хотів би згадати останній тип залежностей (про які я знаю): залежності від однолітків . Також перегляньте це пов'язане запитання SO та, можливо, документи yarn
on bundledDependencies .