patch-package
Предыстория. Решил я обновить зависимости в своем блоге, накопилось около 200х проблем в безопасности (npm audit), да и думал дел на полчаса максимум, это же просто блог. Почти базовая конфигурация вебпака, минималистичный движок для блога на javascript (11ty), да и собственно все. В очередной раз, как же я ошибался.
Брейкинг ченджи в новых версиях, их несовместимость друг с другом и прочее затянулось на несколько часов исправлений. Одна из проблем была в том, что основной пакет для генерации блога обновил версию шаблонизатора liquid на пару мажорных версий, и это сломало рендеринг всех страниц с маркдаун вставками. На гитхабе по теме даже есть ишьюс, в котором есть обсуждения и причина, почему теперь работает именно так, но нет решения. Переходить на другой шаблонизатор долго, откатывать версию 11ty на прошлую или делать форк не хочется. Что же делать?
На помощь приходит библиотека patch-package, которая позволяет сделать правки в node modules, сохранить их в виде diff-файла и накатить после установки зависимостей.
В контексте своей задачи мне было достаточно изменить импорт и инициализацию шаблонизатора. По итогу сгенерировался вот такой diff-файл, который решил проблему.
На рабочем проекте мы тоже используем эту библиотеку и подход, если есть необходимость подправить код внешнего модуля под собственный проект (или быстро запатчить баг в новой версии и выкатить хотфикс).
Предыстория. Решил я обновить зависимости в своем блоге, накопилось около 200х проблем в безопасности (npm audit), да и думал дел на полчаса максимум, это же просто блог. Почти базовая конфигурация вебпака, минималистичный движок для блога на javascript (11ty), да и собственно все. В очередной раз, как же я ошибался.
Брейкинг ченджи в новых версиях, их несовместимость друг с другом и прочее затянулось на несколько часов исправлений. Одна из проблем была в том, что основной пакет для генерации блога обновил версию шаблонизатора liquid на пару мажорных версий, и это сломало рендеринг всех страниц с маркдаун вставками. На гитхабе по теме даже есть ишьюс, в котором есть обсуждения и причина, почему теперь работает именно так, но нет решения. Переходить на другой шаблонизатор долго, откатывать версию 11ty на прошлую или делать форк не хочется. Что же делать?
На помощь приходит библиотека patch-package, которая позволяет сделать правки в node modules, сохранить их в виде diff-файла и накатить после установки зависимостей.
В контексте своей задачи мне было достаточно изменить импорт и инициализацию шаблонизатора. По итогу сгенерировался вот такой diff-файл, который решил проблему.
На рабочем проекте мы тоже используем эту библиотеку и подход, если есть необходимость подправить код внешнего модуля под собственный проект (или быстро запатчить баг в новой версии и выкатить хотфикс).