A webpack plugin that publishes extension builds to the Chrome Web Store.
To begin, you'll need to install @mixmaxhq/publish-extension-webpack-plugin
:
$ npm install @mixmaxhq/publish-extension-webpack-plugin --save-dev
Then add the plugin to your webpack
config. For example:
webpack.config.babel.js
import PublishExtensionPlugin from '@mixmaxhq/publish-extension-webpack-plugin';
export default {
// ...
plugins: [
new PublishExtensionPlugin({
// options go here
}),
],
};
And run webpack
via your preferred method.
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
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
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
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
Type: String
Default: default
The publish target for the extension:
default
- the extension will be available to everyone (published as public extension).trustedTesters
- the extension will be available only to trusted testers (published as private extension).draft
- the extension will be uploaded to the store, but not published.
// in your webpack.config.js
new PublishExtensionPlugin({
target: 'trustedTesters',
})
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/',
})
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,
})
Type: Boolean
Default: false
Set this to true
to suppress logging.
// in your webpack.config.js
new PublishExtensionPlugin({
silent: true,
})
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,
})
PRs are welcome! Please see the contributing guide.
GH_TOKEN=xxx npx semantic-release --no-ci