Для быстрого читателя : это ОК идет о 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-shrinkwrap.json из npm, но не с потерями и дает воспроизводимые результаты.
npm
фактически скопировал эту функцию yarn
, среди прочего.
- Вариант 3: это был ранее рекомендованный подход, который я больше не рекомендую. Идея заключалась в том, чтобы использовать
npm shrinkwrap
большую часть времени, а иногда и помещать все это, включая папку node_module, в ваш репозиторий кода. Или, возможно, использовать термоусадочную упаковку . Лучшие практики в то время обсуждались в блоге node.js и на сайтах разработчиков Joent .
Смотрите также
Это немного выходит за рамки вопроса, но я хотел бы упомянуть последний вид зависимостей (о котором я знаю): зависимости одноранговых узлов . Также см. Этот связанный вопрос SO и, возможно, документы yarn
по bundledDependencies .