Ответ 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... но теперь мы просто сходим с ума.