Идея довольно проста. Сделать интерфейс для плагинов, которые бы представляли собой NPM пакеты.
Например, я могу задекларировать внутри package.json что-то вроде:
{
plugins: ['fire', 'strike', 'ymz']
}
В свою очередь у меня есть 3 npm: myproject-plugin-fire, myproject-plugin-strike, myproject-plugin-ymz.
Они будут автоматически установлены и инициированы внутри приложения.
Я думал делать плагины в стиле
function callback(eventData) {
// тут плагин что-то делает с данными в eventData
return eventData;
}
module.exports = function () {
return {eventName: 'preRender', callback: callback};
}
В таком случае мне кажется их несложно будет регистировать, плюс можно делать цепочки вызовов. Список доступных имен событий можно будет где-то декларировать или даже сделать какой-нибудь микророутинг, вроде 'pre*'.
В общем мне не совсем ясно, как сделать автоматическую установку npm и их регистрацию.
Может даже лучше просто делать через зависимости и искать по префиксу, но мне идея редактирования package.json не очень нравится. В идеале хотелось бы управлять этим всем через какой-то визуальный интерфейс впоследствии.
Но уж это я сделать могу. На данный же момент нужно что-то вродe
npm list
,
npm install
и программный вызов
require()
.
Теоретически я могу делать
system()
вызовы, но как-то это неорганично выглядит, плюс надо как-то обновлять плагины.
Я смотрел на
https://github.com/npm/npm-registry-client и
https://github.com/maxleiko/npmi/ Выглядит пока многообещающим.
Насчет регистрации пока ничего в голову кроме EventEmitter'a не пришло. Может еще что-нибудь посоветуете.
Как сделать установку npm пакетов и их объявление в уже запущенном приложении?