Проверка в node_module была стандартом сообщества, но теперь у нас также есть возможность использовать shrinkwrap. Последнее имеет для меня больше смысла, но всегда есть шанс, что кто-то "заставил публиковать" и ввел ошибку. Есть ли дополнительные недостатки?
Заезд node_modules по сравнению с термоусадочной пленкой
Ответ 1
Мой любимый пост/философия на эту тему проходит весь путь назад (долгое время в node.js) до 2011 года:
https://web.archive.org/web/20150116024411/http://www.futurealoof.com/posts/nodemodules-in-git.html
Цитировать напрямую:
Если у вас есть приложение, которое вы развертываете, проверьте все ваши зависимости на node_modules. Если вы используете npm do deploy, определите для этих модулей только bundleDependencies. Если у вас есть зависимости, которые необходимо скомпилировать, вы все равно должны проверить код и просто запустить rebuild $npm при развертывании.
Каждый, кого я сказал, тоже говорит мне, что я идиот, а затем через несколько недель говорит мне, что я прав, и проверка node_modules на git была благом для развертывания и развития. Его объективно лучше, но вот некоторые из вопросов/жалоб, которые я, кажется, получаю.
Я думаю, что это все еще лучший совет.
Сценарий принудительной публикации редок и npm shrinkwrap
, вероятно, будет работать для большинства людей. Но если вы развертываетесь в производственной среде, ничто не дает вам покоя, как проверка во всем каталоге node_modules
.
В качестве альтернативы, если вы действительно, действительно не хотите проверять каталог node_modules
, но хотите получить лучшую гарантию, не было принудительного нажатия, я бы посоветовал в npm help shrinkwrap
:
Если вы хотите избежать риска того, что византийский автор заменит пакет, который вы используете, с кодом, который разбивает ваше приложение, вы можете изменить файл shrinkwrap, чтобы использовать ссылки git URL, а не номера версий, чтобы npm всегда выбирал все пакеты из git.
Конечно, кто-то может запустить странный git rebase
или что-то еще и изменить хэш-код git commit... но теперь мы просто сходим с ума.
Ответ 2
npm FAQ напрямую отвечает на это:
- Проверьте node_modules на git на вещи, которые вы развертываете, например на веб-сайтах и приложения.
- Не проверяйте node_modules на git для библиотек и модулей предназначенные для повторного использования.
- Используйте npm для управления зависимостями в своем dev среде, но не в сценариях развертывания.
цитируется npm FAQ