Intereting Posts
Как зеркалировать официальное дерево ядра Linux на частном гитолитном сервере? Visual Studio не загружает правильный проект для решения Неспособный с Github: разрешение отклонено (Publickey) Форматирование сообщений фиксации Запретная ошибка при использовании «Tag this build» в Jenkins Отслеживание объединенных наборов изменений из удаленной ветви Является ли метка на ветке источника применена к целевой ветке при слиянии Можете ли вы выполнить частичную проверку с помощью Subversion? Почему svn propset терпит неудачу с критической ошибкой двоеточия пути на реквизитах mergeinfo? Вопрос авторизации в openshift online3 Как наши разработчики тестируют ветки SVN python с Дженкинсом? Запуск автозагрузки в результате нажатия кнопки «запрос на слияние» Как выполнять рабочий процесс hg? Eclipse не видит изменений, внесенных в зависимость от GitHub проекта Maven Восстановление удаленных коммитов в SVN

Должен ли я полагаться на package.json или поддерживать контроль версий на моих модулях узлов?

В последнее время я работаю над реактивными проектами. Я сделал старый проект, и я хотел бы клонировать его в новый проект, чтобы я мог развить что-то новое поверх старой версии, но не повлиять на старый проект.

Я выяснил, что каждый раз, когда я npm install с одним и тем же node_modules установленная папка node_modules может быть не такой. Это может быть связано с тем, что у нас есть префикс ^ или ~ перед некоторыми версиями модулей. Кроме того, установленные модули также имеют свои собственные зависимости, которые могут быть обновлены сами по себе.

Поэтому дело касается проблемы. Должен ли я использовать package.json для управления версиями?

В соответствии с здесь: Почему нам нужно использовать package.json? , он сказал, что package.json provides a simple way for people to keep track of packages they use in their application.

Однако, как я могу управлять версиями с моим проектом, если package.json всегда обновляет проект сам по себе, не касаясь совместимости разных модулей.

Единственное решение, на мой взгляд, следующее: мы должны сделать контроль версий на node_modules. Если это так, package.json становится бессмысленным?

Итак, я хотел бы знать, что такое промышленная практика для контроля версий в node_modules и package.json ?

Solutions Collecting From Web of "Должен ли я полагаться на package.json или поддерживать контроль версий на моих модулях узлов?"

Если вы используете версию NPM до 5, тогда вы должны изучить Shrinkwrap NPM . Это блокирует версии модулей NPM, которые вы используете в настоящее время. После того, как они были npm install в проект, если кто-либо еще npm install они получат точные версии, указанные в термоусадочной упаковке.

NPM-Shrinkwrap
Заблокировать версии зависимостей для публикации

С выпуском NPM 5 он автоматически создает файл package-lock.json , похожий на shrinkwrap, когда вы запускаете npm install по умолчанию. Вы должны зафиксировать файлы блокировки или shinkwrap в SCM.

Вы также должны заглянуть в пряжу . Пряжа выходит из коробки с файлом yarn.lock который работает одинаково, но с дополнительными скоростями производительности и автономными возможностями.

Используя подробный, но сжатый формат блокировки и детерминированный алгоритм установки, Yarn может гарантировать, что установка, работающая в одной системе, будет работать точно так же в любой другой системе.

Если у вас уже есть папка project и node_modules и вы хотите изменить Yarn без установки всех модулей снова, вы можете запустить yarn import который будет генерировать файл блокировки на основе ваших текущих папок модулей узлов.

Оба вышеупомянутых решения означают, что вам не нужно добавлять ваши node_modules в SCM – это может добавить другие сложности, когда пользователи на разных платформах (windows, mac и т. Д.) Работают над проектом. Файлы блокировки должны быть зафиксированы в вашем проекте.