electron-extensions will allow you to use Chrome extensions APIs with Electron.
$ npm install electron-extensionsThe 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, session } from 'electron';
app.on('ready', () => {
...
const extensions = new ExtensibleSession(session.defaultSession);
extensions.loadExtension('C:/.../abcdefghijklmnoprstuwxyz'); // Path to the extension to load
...
});sessionElectron.Session - used for injecting preloads to loadcontent_scriptsin all webContents within a given Electronsession. Must be called inappreadyevent.
If the webContents are in multiple BrowserWindows, the --window-id=<the BrowserWindow id> additional argument should be passed to the webContents.
For reference see the Electron documentation.
For example:
{
webPreferences: {
additionalArguments: ['--window-id=1'],
},
}If you want to prevent injecting content_scripts to some URLs that start with a specified string, use --blacklist=.
For example:
{
webPreferences: {
additionalArguments: ['--blacklist=["wexond://"]'],
},
}It means all URLs starting with wexond:// should be protected from injecting content_scripts.
It's only for the main process. It's used to load extensions and handle their events.
Loads an extension from a given path.
Adds a BrowserWindow to send and observe UI related events such as chrome.browserAction.setBadgeText or chrome.browserAction.onClicked.
import { extensionsRenderer } from 'electron-extensions/renderer';Sends chrome.browserAction.onClicked event to a given extension.
Emitted when chrome.browserAction.setBadgeText has been called in an extension.
Returns:
extensionIdstringdetailschrome.browserAction.BadgeTextDetails
Emitted when chrome.tabs.create has 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.CreatePropertiescallback(tabId: number) => void - Must be called with the created tab id as an argument. Also, thetabIdmust be the same as any attachedwebContentsid