This repository contains the Rubberduck chrome extension, and the native host app (inside
For development, run this in watch mode. Note: this will require the native host to be configured first (see native-host/README.md)
npm run watch
To distribute binary file, we can pack the extension into a crx file. Generate new crx using the command. Packing needs keys (see below).
npm run pack
Run tests with (defaults to watch mode).
Development keys setup
To be able to pack crx (for production), you need to setup
keys/production_key.pemin your project directory. Get this key from here (needs Google account).
This should not be required if we are distributing the extension through the Chrome Store. See below for publishing.
To publish the extension, ensure that your account on the Chrome developer dashboard is setup.
Bump the version -- open
manifest.jsonand bump the version depending on your changes.
Generate the zip file for uploading using the following. This also uploads the source maps to Sentry.
npm run chrome-build
Upload the generated zip file (
bundle.zip) on the Chrome dashboard.
The extension has three components, which are bundled individually through Webpack.
Background page: this is the main page of the extension (also called "event page") in the docs. The background page listens for some chrome events, and injects scripts to the page.
Content script: this is the script that is injected in the page using programmatic injection. Since the injected script renders elements, this is built using React.
Options page: this is the settings page. Not much to see here.