Заставить NPM установить все зависимости из пользовательских, клонированных репозиториев - PullRequest
0 голосов
/ 22 ноября 2018

Это скорее вопрос архитектурного подхода, чем проблема конкретного программирования.

Ситуация:

Из-за таких проблем, как инцидент на левой панели и зависимостей, которыеВыпуская критические изменения без изменения номеров версий, некоторые сбои сборки могут происходить без изменения какого-либо кода проекта или информации о конфигурации npm, например, package.json и package-lock.json.Моя система сборки будет запускать npm install в репозитории и опускать зависимости перед каждой сборкой.Даже если файл package-lock.json зафиксирован и находится в режиме воспроизведения, сборка может случайно произойти (и недавно произошла ошибка) из-за изменений в зависимостях, которые я не контролирую.

Корпоративным образом было решено, что мы будембольше не позволять этому происходить.

С учетом параметров самым простым решением, по-видимому, является просто фиксация папки node_modules с известной хорошей конфигурацией.Однако, я боюсь, что это может вызвать проблемы из-за разного использования ОС между клиентами-разработчиками и системами сборки, Mac и Linux, соответственно.По-видимому, некоторые зависимости будут производить компиляции для конкретной среды после установки, и их фиксация приведет к тому, что в системе сборки будут присутствовать неправильные двоичные файлы.

В качестве альтернативы, я искал способ массового клонирования, а не только нашзависимости, но зависимости наших зависимостей в некотором автоматическом режиме для наших локальных репозиториев.Теоретически я мог получить свои зависимости от своих клонов репозитория как на клиентах dev, так и на серверах сборки, гарантируя, что зависимости не могут измениться каким-либо образом, независимо от их глубины, если я не решу изменить их вручную.Однако, хотя я, безусловно, могу указать зависимости относительно URL-адреса git-репо в package.json, файл package-lock.json - это единственный файл, который фактически содержит все зависимости.И он не ссылается на URL-адреса git-репо, а на некоторый "resolved" URL, который ссылается на файл .tgz, предоставленный npmjs.org.

Есть ли способ заставить мои команды NPM или файл package-lock.jsonиспользовать пользовательские репозитории для ВСЕХ зависимостей и указывать их нашим клонам?

Я пропускаю какой-то другой метод достижения этой цели?Как вы решили эту проблему?

Большинство статей и вопросов StackOverflow по этой теме, кажется, либо поддерживают идею о том, что NPM в сочетании с проверенным в package-lock.json всегда решит эту проблему, что в нашем случае неверно,Или они рекомендуют зафиксировать папку node_modules (на которую фанатично возражают другие).

...