Как разрешить плагины в CLI узла - PullRequest
0 голосов
/ 01 мая 2020

Я создал небольшой CLI с Node.js с некоторыми базовыми функциями c. Теперь я хотел бы добавить GUI, созданный с помощью Electron, к этому CLI в качестве расширения / плагина, который можно установить отдельно. По сути, предоставляя пользователю слой представления, который использует те же функции, что и CLI (но в GUI).

Однако я не совсем уверен, как go об этом. Я изо всех сил пытаюсь создать хорошую (или любую) архитектуру, которая бы позволяла такое расширение, поскольку GUI (плагин) должен напрямую взаимодействовать с функциональностью основного приложения, но должен работать отдельно.

Я подумал о нескольких решениях, и все они кажутся мне довольно странными.

Решение № 1:

Добавить функциональность установки в CLI, которая в основном тянет пакетную форму npm в отдельную папку (т.е. ./plugins/). Затем добавьте команду «start», которая запускает электронное приложение через CLI. Затем плагину потребуются основные функциональные возможности CLI с помощью require, в основном в коде есть что-то вроде этого:

const mainAppFuncs = require(path.join(__dirname, '..', '..', 'funcs')); 

Это, кажется, работает "отлично", однако, это кажется очень подверженным ошибкам и кажется очень плохим выбор дизайна

Это, однако, позволило бы мне напрямую связаться с плагином (GUI) с реальным приложением.

Решение # 2

Вторая идея, которая у меня есть, установить пакет с помощью команды npm install <some-package> в папке root приложения, зарегистрировать плагин и затем запустить его через основное приложение. Однако я не совсем уверен, как заставить коммуникацию работать от плагина к основному приложению. Это похоже на одностороннюю связь, идущую от CLI к плагину, и, возможно, потребуется какое-то промежуточное программное обеспечение для связи между ними.

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

Спасибо!

...