Как заменить под-зависимость на локальную копию?

CKEditor используется в проекте, и доработка некоторых фич потребовала изменения пары родных пэкэджей. Например, @ckeditor/ckeditor5-paragraph

Сделали локальную копию всего пакета в коде нашего проекта в src/overrides/ckeditor5-paragraph и добавили свой код в нужные компоненты. По-человечески иначе требуемый функционал не добавить.

Как правильно подсунуть теперь этот монстр Франкенштейна в сборку CKEditor5?

Простой способ на поверхности — через npm link заменить в node_modules родной модуль на наш модифицированный. Он просто создает hard link, и вместо папки node_modules/@ckeditor/ckeditor5-paragraph становится линк на наш src/overrides/ckeditor5-paragraph Плюс еще в 14 местах надо проделать то же самое — каждый из packages CKEditor'а в собственных node_modules имеет копию ckeditor5-paragraph

Плюс шелл скрипт, который сделает npm install, потом серию npm link'ов и затем npm run build.

При обновлении версий, этот карточный домик рухнет, т.к. npm link перестанет цеплять устаревшую версию локального пакета. Наверное. Ну и ладно, при обновлении надо будет перепроверить все наши топорные overrides. Такова расплата.

Никогда не сталкивался с такой задачей варварской модификации родных модулей используемого пакета.
Как это правильно делать?
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
sfi0zy
@sfi0zy Куратор тега JavaScript
Creative frontend developer
В package.json есть раздел overrides как раз для таких модификаций зависимостей зависимостей. В примерах в документации там почему-то акцент сделан только на версии пакетов, но можно и полностью заменить пакет на свой, если указать не версию, а локальный путь к нему.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы