Как самостоятельно разобраться в архитектуре npm пакета?

Как разумнее разбираться в написании пакета какой то библиотеки? Я к примеру не нашел подходящего текстового редактора и хотел бы написать для себя свою реализацию. Разумеется, что решение будет не идеальное, но есть уже готовые библиотеки.
Я к примеру не смог разобраться с текстовым редактором, чтобы изменить поведение загрузки изображение не в base64, а с помощью ссылки полученной с сервера. Документация к нему есть очень простенькая и при этом можно конечно и самому понять как он работает и переписать какую то часть.
Как вы анализируете работу пакета, библиотеки? Через отладчик смотрите запуски, пытаетесь понять понять какие паттерны были применены. Для меня просто как черный ящик относительно код пакета, но я понимаю, что как раз надо исследовать и понимать как оно устроено.
Я просто даже не знаю примерно как код может быть разбит на модули под задачу текстового редактора и с чего начинать отладку. Понимаю, что вопрос общий, но если дадите пару советов с чего начинать и какой алгоритм действий использовать, буду вам признателен. По отдельности на чистом JS я могу написать код под обработке текста, ресайза изображений, а в вот "архитектурного" представления нету, хотя его можно подсмотреть в готовых библиотеках.

Дополнительно:

Через отладчик смотрите запуски, пытаетесь понять понять какие паттерны были применены. Для меня просто как черный ящик относительно код пакета, но я понимаю, что как раз надо исследовать и понимать как оно устроено.

Какой отладчик и черный ящик.
Код буквально лежит в на гитхабе на который ссылку приложили или в node_modules локально

Вопрос в том как пройтись по папкам и разобраться?
Как обычно с любым проектом.
npm пакетность это про то что в package.json добавлено пара строк и "загружено" на npmjs
В остальном это обычный проект как любой фронт сайта или чего бы то ни было.

Я к примеру не смог разобраться с текстовым редактором, чтобы изменить поведение загрузки изображение не в base64, а с помощью ссылки полученной с сервера. Документация к нему есть очень простенькая и при этом можно конечно и самому понять как он работает и переписать какую то часть.

Секунд 15 заняло найти параметр imageUploadUrl в readme для загрузки файлов на сервер, а не через base64.

  • Я имел в виду, как пройтись по папкам и разобраться. То что npm пакеты - это просто код, который скачивается через менеджер и кладется в node_modules - это понятно. Я про сам код библиотеки, как из слежубных вызовов object.keys, reduce и т.д, которые строят компонент - выделить функции выполняющие задачи и те, которые служат для запуска и построения обьектов, дерева условно.
  • ksikrii, открыть нужный модуль/находить нужную функцию и смотреть что и как работает.

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

  • ну т.е. глобально ответ на все вопросы - читать код, искать, разбираться.
  • Александр Аксентьев, диалог у нас забавный получается. Просто для анализа должны быть какие то представления у человека, которые он использует. И у меня был вопрос касательно этих представлений, инструментов.

    читать код, искать, разбираться - это дейсвтенно, я не ставлю под сомение
    Я имел в виду, что к примеру фреймворк для новичка может быть сложен. Гораздо понятнее всё происходит, если написать какой то псведо упрощенный фреймворк с базовыми функциями соденения к базе данных, mvc паттерн и т.д

    Представление о языке, функциях есть, общее понимание паттернов без практики глубокой. Поэтому я и спросил, для изучения рандомных библиотек мыслят ли те кто быстро разбирается в коде как то по другому. Возможно как то дебажат код определенно и т.д Может и нет, просто как ты говоришь, сидеть, разбираться и ничего особо секретного нету в этом, просто время потратить достаточно. Я понимаю, что программирование достаточно декларативно. Просто где эта грань между пониманием и когда слишком много абстракций. Просто сидеть и отслеживать весь код?

  • ksikrii, я из тех кто быстро разбирается во всём. У меня хаотичный процесс происходит.
    Естественно есть какие-то общие сценарии, но вряд ли это можно как-то описать для всех случаев.

    По сути всегда есть какая-то конкретная задача найти X и сделать Y.
    Идёшь в код ищешь зацепки, ключевые слова и т.п.
    Находишь условно где это в целом реализовано, дальше с помощью IDE перемещаешься по всему проекту через ссылки в коде и ищешь всё что может быть задействовано в том или ином функционале.
    Так и разбираешься пока не поймёшь что для того чтобы сделать твою задачу ты нашел все места нужные и понял как полностью впилить туда свой кусок логики или изменить существующую.

    Дебаг именно из браузера для фронта чаще всего заключается в том чтобы взять нужный текс, кнопку или даже css класс найти это в коде и дальше уже по цепочке вверх разбираться внутри кода. Если речь про такие части проекта которые ты не знаешь изначально.

    Для рандомных библиотек тоже общего подхода не будет, потому что они все по разному сделаны.
    Даже если взять несколько радакторов текста, там будет всё разнится как минимум потому что
    какие-то нативно написаны в 2010 и с тех пор развиваются.
    Какие-то будут на vue/react/angular или чём угодно ещё.
    Какие-то мог написать кто-то на коленке для себя, а потом выложить, и там вообще не будет задуманной структуры как таковой.

  • Александр Аксентьев, спасибо, что поделился своим мнением. Тогда буду просто понимать, что надо дольше времени отдавать, чтобы ознакомиться с библиотекой и по этапно по IDE лазить по вызовам функций, пока не сложится картина, параллельно какие то консутркции погуглить.

    А то у меня общий навык есть по написанию простых приложений на фреймворках, докер, деплой и т.д А сам навык в незнакомых библиотеках копаться атрофирован и это чуть странно, но и причина этому, что большая часть поглощения контента была через видео.

    Не знаю почему у меня изначально не получилось с тем редактором, сейчас уже добавил ссылку на загрузку картинок и посмотрел какй код и формат надо возратить, всё заработало. Хотя изначально тоже читал ту доку.
    Очень помог этими 15 секундами!

  • Александр Аксентьев, Я зашел на твою страничку, там есть статья старенькая VueJS/Laravel + Quill Editor handling base64 image upload. Это получается - ты в проекте просто на сервере делал парсер base64 в картинку и сохранял в базе уже контент с ссылками на фотографии. И потом когда заходишь в редактирование статьи, то плагинам по ресайзу всё равно же как там хранится ссылкой или base64?
  • ksikrii, да редактору уже пофиг в чём оно там

Ответы:

Внезапно в каждом нпм есть папка срк
Есть даже ссылка на гит.

Как говорят апологиаты опенсорса, вы можете все сами поправить.
Я обычно ржу, потому что поправить ну это и уметь надо.
Вот как пример то что мне заказали переработать, ссылка на результат
https://github.com/vkorotenko/react-native-slide-verify

 

Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

 

    • Как самостоятельно разобраться в архитектуре npm пакета?Есть ответ
    • 09.04.2024
    Ответить

    Для того чтобы разобраться в архитектуре npm пакета, вам необходимо выполнить следующие шаги:

    1. **Изучение документации**: В первую очередь, ознакомьтесь с документацией пакета. Обычно в README файле на GitHub или на официальном сайте разработчика содержится информация о структуре проекта, используемых технологиях и принципах работы.

    2. **Исследование исходного кода**: Посмотрите исходный код пакета, изучите структуру файлов и папок, а также архитектурные решения, принятые разработчиком. Это поможет вам понять, как устроен проект и какие компоненты в него входят.

    3. **Использование инструментов анализа кода**: Для более глубокого понимания архитектуры пакета вы можете воспользоваться различными инструментами анализа кода, такими как Source Insight, Understand, или другими аналогами. Они помогут вам просматривать код, искать зависимости между компонентами и анализировать его структуру.

    4. **Изучение зависимостей и модулей**: Посмотрите, какие зависимости использует пакет, и как эти зависимости взаимодействуют между собой. Это поможет вам понять, какие функции предоставляет пакет, и какие возможности он предоставляет для расширения.

    Приведу пример использования тега

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

    • Как самостоятельно разобраться в архитектуре npm пакета?Есть ответ
    • 07.04.2024
    Ответить

    Для того чтобы разобраться в архитектуре npm пакета, вам следует выполнить следующие шаги:

    1. Изучите документацию: Первым шагом будет изучение документации npm пакета. Обычно в README файле на GitHub или на официальном сайте пакета содержится информация о его архитектуре, основных функциях, зависимостях и примерах использования.

    2. Изучите исходный код: Для более глубокого понимания архитектуры пакета вам потребуется изучить исходный код. Скачайте исходный код пакета с GitHub или npm и рассмотрите его структуру, файлы, классы и функции.

    3. Используйте инструменты анализа кода: Для удобного анализа структуры и зависимостей пакета вы можете воспользоваться различными инструментами, такими как npm-dependency-analyzer, npm-check или npm-why.

    4. Разберитесь с зависимостями: Изучите зависимости, которые используются в пакете. Определите их роль и взаимодействие между собой.

    Пример использования тега

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

Оставить комментарий