Skip to content

A webpack plugin that publishes extension builds to the Chrome Web Store.

License

Notifications You must be signed in to change notification settings

IBM/publish-extension-webpack-plugin

Repository files navigation

npm travis cover

Publish Extension Webpack Plugin

A webpack plugin that publishes extension builds to the Chrome Web Store.

Getting Started

To begin, you'll need to install publish-extension-webpack-plugin:

$ npm install publish-extension-webpack-plugin --save-dev

Then add the plugin to your webpack config. For example:

webpack.config.babel.js

import PublishExtensionPlugin from 'publish-extension-webpack-plugin';

export default {
  // ...
  plugins: [
    new PublishExtensionPlugin({
      // options go here
    }),
  ],
};

And run webpack via your preferred method.

Options

extensionId

Type: String Default: process.env.GOOGLE_EXTENSION_ID

If not provided via options, this must be present in your environment as GOOGLE_EXTENSION_ID. You can get this from your extension's control panel on the Developer Dashboard.

$ GOOGLE_EXTENSION_ID=extensionidgoeshere123 webpack

clientId

Type: String Default: process.env.GOOGLE_CLIENT_ID

If not provided via options, this must be present in your environment as GOOGLE_CLIENT_ID. You can get this and your other secret keys by following this guide.

$ GOOGLE_CLIENT_ID=clientidgoeshere123 webpack

clientSecret

Type: String Default: process.env.GOOGLE_CLIENT_SECRET

If not provided via options, this must be present in your environment as GOOGLE_CLIENT_SECRET. You can get this and your other secret keys by following this guide.

$ GOOGLE_CLIENT_SECRET=clientsecretgoeshere123 webpack

refreshToken

Type: String Default: process.env.GOOGLE_REFRESH_TOKEN

If not provided via options, this must be present in your environment as GOOGLE_REFRESH_TOKEN. You can get this and your other secret keys by following this guide.

$ GOOGLE_REFRESH_TOKEN=refreshtokengoeshere123 webpack

path

Type: String Default: webpack.output.path

The path containing the build of your extension. This should include a manifest file.

// in your webpack.config.js
new PublishExtensionPlugin({
  path: './dist/my-chrome-extension/',
})

keepBundleOnSuccess

Type: Boolean Default: false

By default, the generated ZIP file used for publishing the extension is deleted if the upload is successful. Set this to true to keep the ZIP file.

// in your webpack.config.js
new PublishExtensionPlugin({
  keepBundleOnSuccess: true,
})

silent

Type: Boolean Default: false

Set this to true to suppress logging.

// in your webpack.config.js
new PublishExtensionPlugin({
  silent: true,
})

disabled

Type: Boolean Default: false

Set this to true to disable the plugin (this is the same as not including it to begin with).

// in your webpack.config.js
new PublishExtensionPlugin({
  disabled: true,
})

Contributing

PRs are welcome! Please see the contributing guide.