zoonman
@zoonman
CEO @ LinuxQuestions.ru

Как создать плагин для Node.JS?

Идея довольно проста. Сделать интерфейс для плагинов, которые бы представляли собой 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 пакетов и их объявление в уже запущенном приложении?
  • Вопрос задан
  • 582 просмотра
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Вы хотите того, что вам вот нафиг не надо))
Для постустановки и тому подобных штук давно придуманы https://docs.npmjs.com/misc/scripts
Что касается настройки плагинов - это задача инженера, а не системы управления пакетами.
Ответ написан
Ваш ответ на вопрос

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

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