ОБНОВЛЕНИЕ: теперь есть npm shrinkwrap
, который решает проблему блокировки точных версий зависимостей, даже зависимостей зависимостей! Подробнее здесь.
Регистрация в node_modules
может быть проблематичной, так как среда, в которой она работает, может отличаться от пользователя к пользователю - поэтому то, что скомпилировано в одной среде, может не работать в другой. Кроме того, он заполнил бы ваши журналы изменений и репозитории сторонним кодом. Насколько я понимаю, это заключение, к которому вы пришли с краткой версией вопроса, поэтому позвольте мне обратиться к нему.
Краткая версия: как убедиться, что рабочие серверы используют точно такую же версию всех зависимых модулей, которую вы используете во время разработки?
Внутри вашего package.json
будет dependencies: {}
, если его там нет, то добавьте его. Чтобы достичь желаемого, добавьте свои зависимости в качестве ключа и их точные версии в качестве значения. Например. dependencies: { docpad: '2.5.0', mocha: '1.1.0' }
Однако обычно (это зависит от автора) обновления до номера ревизии (номера x.x.X) являются просто исправлениями ошибок и безопасны. Вы можете разрешить незначительные изменения, выполнив dependencies: { docpad: '2.5.x', mocha: '1.1.x' }
, что избавляет вас от необходимости обновлять package.json и выпускать релиз каждый раз, когда появляется исправление ошибки. Вы даже можете делать такие вещи, как 2.x
, если хотите.
Это решение, которое я решил использовать для всех своих модулей, поскольку оно гарантирует, что даже через 6 месяцев или независимо от того, какой модуль все еще будет работать, тогда как выполнение чего-то вроде >= 2.0.0
означает, что выйдет v3 зависимости , ваш модуль, вероятно, будет непригодным в это время. Гарантия того, что вы придерживаетесь определенных версий, «гарантирует» стабильность во времени.
Для справки вы можете увидеть, как я это сделал в моих модулях с открытым исходным кодом node.js здесь