Это скорее вопрос архитектурного подхода, чем проблема конкретного программирования.
Ситуация:
Из-за таких проблем, как инцидент на левой панели и зависимостей, которыеВыпуская критические изменения без изменения номеров версий, некоторые сбои сборки могут происходить без изменения какого-либо кода проекта или информации о конфигурации 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
(на которую фанатично возражают другие).