Проверьте в node_modules против shrinkwrap

Проверка в node_module была стандартом сообщества, но теперь у нас также есть возможность использовать shrinkwrap. Последнее имеет больше смысла для меня, но всегда есть шанс, что кто-то "принудительно опубликовал" и внес ошибку. Есть ли дополнительные недостатки?

2 ответа

Решение

Мой любимый пост / философия на эту тему восходит к далекому прошлому (долгое время в файле node.js) до 2011 года:

https://web.archive.org/web/20150116024411/http://www.futurealoof.com/posts/nodemodules-in-git.html

Цитировать напрямую:

Если у вас есть приложение, которое вы развертываете, отметьте все ваши зависимости в node_modules. Если вы используете npm, выполните развертывание, определите только bundleDependencies для этих модулей. Если у вас есть зависимости, которые нужно скомпилировать, вы все равно должны проверить код и просто запустить $ npm rebuild при развертывании.

Все, кому я это рассказывал, тоже говорят мне, что я идиот, а через несколько недель мне говорят, что я был прав, и проверка узловых модулей на git была благословением для развертывания и разработки. Это объективно лучше, но вот некоторые вопросы / жалобы, которые я, кажется, получаю.

Я думаю, что это все еще лучший совет.

Сценарий принудительной публикации является редким и npm shrinkwrap вероятно, будет работать для большинства людей. Но если вы развертываете в производственной среде, ничто не дает вам душевного спокойствия, как проверка во всем node_modules каталог.

С другой стороны, если вы действительно, действительно не хотите регистрироваться в node_modules каталог, но хочу получить лучшую гарантию, что не было принудительного толчка, я бы следовал советам в npm help shrinkwrap:

Если вы хотите избежать какого-либо риска того, что византийский автор заменит пакет, который вы используете, кодом, который нарушает работу вашего приложения, вы можете изменить файл shrinkwrap, чтобы использовать ссылки на URL-адреса git, а не номера версий, чтобы npm всегда выбирал все пакеты из git.

Конечно, кто-то может запустить странный git rebase или что-то и изменить хеш коммитов... но теперь мы просто сходим с ума.

npm FAQ прямо отвечает на это:

  • Проверьте node_modules в git для вещей, которые вы развертываете, таких как веб-сайты и приложения.
  • Не проверяйте node_modules в git для библиотек и модулей, предназначенных для повторного использования.
  • Используйте npm для управления зависимостями в вашей среде разработки, но не в сценариях развертывания.

цитируется с npm FAQ

Другие вопросы по тегам