Подмодули с Vercel и Next.js

Vercel — это команда, стоящая за Next.js, и у них есть своя платформа под названием Vercel. Я часто использую ее для развертывания своих проектов Next.js, и она отлично работает. У меня было, когда я пытался развернуть там свой репозиторий с подмодулем.

Видите ли, Vercel поддерживает подмодули, однако только тогда, когда они общедоступны, что в моем случае было невозможно. Мне пришлось бы изменить весь конвейер CI/CD, прекратить использовать подмодуль или что-то придумать.

Я начал что-то выяснять.

Во-первых, я нашел подтверждение того, что моя проблема реальна, действительно нет поддержки приватных подмодулей в Vercel — и, судя по скорости, с которой Vercel выпускает новые обновления для Next.js (очень часто) и тот факт, что эта проблема до сих пор не решена, я думаю, что приватные подмодули еще предстоит долгий путь, и они не очень высоко в списке TODO.

Подумав об этом и проверив документы Vercel, чтобы узнать, каковы мои ограничения, я, наконец, начал что-то делать.

Решение, которое я придумал, — это простой скрипт, который вы запускаете вместо команды установки по умолчанию в Vercel (вместо yarn или npm install). Я пользуюсь этим скриптом уже пол года и переделывал и улучшал его бесчисленное количество раз, теперь его полностью рабочая версия работает так же, как и настоящий нативный приватный подмодуль.

Как это использовать?

Это довольно просто.

Сам код

Я добавил уйму комментариев, чтобы вы могли легко понять, что происходит, всегда полезно понимать, что вы используете, особенно если это какой-то bash-скрипт, и особенно если вы используете его для запуска важного кода на производстве;)

Вот и все! 🎉

Спасибо за чтение, надеюсь, это помогло вам!

Полный репозиторий, содержащий это решение, доступен здесь:
https://github.com/beeinger/vercel-private-submodule

Если у вас есть идеи, как улучшить это решение или вы хотели бы реализовать поддержку более чем одного подмодуля, дайте мне знать!
С удовольствием буду сотрудничать!