1.2.0 • Published 3 years ago

electron-plugin-manager v1.2.0

Weekly downloads
2
License
MIT
Repository
github
Last release
3 years ago

electron-plugin-manager

Plugin Manager based on NPM for Electron apps

NOTE: Does not work with native node modules

Installation

$ npm i --save electron-plugin-manager

Usage

Let's assume our app name is Dotsync

Assuming we are storing the config data for our electron app in the %APPDATA%:

// In main process
const { app, ipcMain } = require('electron');
const epm = require('electron-plugin-manager');

const dir = path.join(app.getPath('appData'), 'Dotsync');

epm.manager(ipcMain);
// In renderer process
const { remote, ipcRenderer } = require('electron');
const epm = require('electron-plugin-manager');

const dir = path.join(remote.app.getPath('appData'), 'Dotsync');

Install

We can install a package from NPM as plugin by:

// In main process
epm.install(dir, 'is-number', 'latest', (err, pluginPath) => {
  // ...
});
// In renderer process
ipcRenderer.on('epm-installed-is-number', (event, err, pluginPath) => {
  // ...
});

ipcRenderer.send('epm-install', dir, 'is-number', 'latest');
// Response sent to `epm-installed-${name}` channel where `name` is the plugin name

Uninstall

We can uninstall an installed plugin by:

// In main process
epm.uninstall(dir, 'is-number', (err) => {
  // ...
});
// In renderer process
ipcRenderer.on('epm-uninstalled-is-number', (event, err) => {
  // ...
});

ipcRenderer.send('epm-uninstall', dir, 'is-number');
// Response sent to `epm-uninstalled-${name}` channel where `name` is the plugin name

List

We can list all the installed plugins by:

// In both process
epm.list(dir); // Array of name

We can list all the installed plugins along with their versions by:

// In both process
epm.list(dir, { version: true }); // Array of name@version

Load

We can load a plugin by:

// In main process
epm.load(dir, 'is-number'); // Loaded plugin
// In renderer process
epm.load(dir, 'is-number', remote.require); // Loaded plugin

Unload

We can unload a plugin by:

// In main process
epm.unload(dir, 'is-number');
// In renderer process
ipcRenderer.send('epm-unload', dir, 'is-number');

License

MIT/X11

Bug Reports

Report here. Guaranteed reply within a day.

Contact

Pavan Kumar Sunkara (pavan.sss1991@gmail.com)

Follow me on github, twitter

1.2.0

3 years ago

1.1.0

5 years ago

1.0.0

5 years ago

0.3.2

6 years ago

0.2.3

6 years ago

0.3.1

6 years ago

0.3.0

6 years ago

0.2.2

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.0

6 years ago