Implementation of Chrome extension APIs for Electron
electron-extensionswill allow you to use Chrome extensions APIs with Electron.
$ npm install electron-extensions
The library is really easy-to-use. All you have to do is to put the following code in your main process:
import { ExtensibleSession } from 'electron-extensions/main'; import { app } from 'electron';const extensions = new ExtensibleSession();
(async () => { await app.whenReady(); extensions.loadExtension('C:/.../abcdefghijklmnoprstuwxyz'); // Path to the extension to load })();
ExtensibleSession
main
new ExtensibleSession(options: IOptions)
optionsobject
partitionstring - By default
null. It's used for injecting preloads to load
content_scriptsin all webContents within a given Electron
session. Must be called in
app
readyevent.
preloadPathstring - Path to content preload script. The option can be useful for bundlers like
webpackif you're using
CopyWebpackPlugin.
blackliststring[] - List of URLs or glob patterns preventing from injecting
content_scriptsto. For example
[wexond://*/*].
It's only for the main process. It's used to load extensions and handle their events.
loadExtension(path: string)
Loads an extension from a given path.
addWindow(window: Electron.BrowserWindow)
Adds a BrowserWindow to send and observe UI related events such as
chrome.browserAction.onClicked
blackliststring[]
List of URLs or glob patterns preventing from injecting
content_scriptsto. For example
[wexond://*].
set-badge-text
Emitted when
chrome.browserAction.setBadgeTexthas been called in an extension.
Returns:
extensionIdstring
detailschrome.browserAction.BadgeTextDetails
create-tab
Emitted when
chrome.tabs.createhas been called in an extension.
import { extensionsRenderer } from 'electron-extensions';extensionsRenderer.on('create-tab', (details, callback) => { const tab = createTab(details); // Some create tab method... callback(tab.id); });
Returns:
detailschrome.tabs.CreateProperties
callback(tabId: number) => void - Must be called with the created tab id as an argument. Also, the
tabIdmust be the same as any attached
webContentsid
extensionsRenderer
renderer
import { extensionsRenderer } from 'electron-extensions/renderer';
browserAction.onClicked(extensionId: string, tabId: number)
Emits
chrome.browserAction.onClickedevent in a given extension.