Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mixmaxhq/publish-extension-webpack-plugin
A webpack plugin that publishes extension builds to the Chrome Web Store.
https://github.com/mixmaxhq/publish-extension-webpack-plugin
Last synced: about 1 month ago
JSON representation
A webpack plugin that publishes extension builds to the Chrome Web Store.
- Host: GitHub
- URL: https://github.com/mixmaxhq/publish-extension-webpack-plugin
- Owner: mixmaxhq
- License: apache-2.0
- Archived: true
- Fork: true (IBM/publish-extension-webpack-plugin)
- Created: 2022-10-28T11:09:58.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-05-28T18:28:23.000Z (5 months ago)
- Last Synced: 2024-09-23T16:17:37.442Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 2.14 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://jenkins-external.mixmax.com/buildStatus/icon?job=mixmaxhq%2Fpublish-extension-webpack-plugin%2Fmaster)](https://jenkins.mixmax.com/job/mixmaxhq/job/publish-extension-webpack-plugin/job/master/)
# 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 `@mixmaxhq/publish-extension-webpack-plugin`:
```console
$ npm install @mixmaxhq/publish-extension-webpack-plugin --save-dev
```Then add the plugin to your `webpack` config. For example:
**webpack.config.babel.js**
```js
import PublishExtensionPlugin from '@mixmaxhq/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](https://chrome.google.com/webstore/devconsole).
```console
$ 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](https://developer.chrome.com/webstore/using_webstore_api).
```console
$ 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](https://developer.chrome.com/webstore/using_webstore_api).
```console
$ 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](https://developer.chrome.com/webstore/using_webstore_api).
```console
$ GOOGLE_REFRESH_TOKEN=refreshtokengoeshere123 webpack
```### `target`
Type: `String`
Default: `default`The publish [target](https://developer.chrome.com/docs/webstore/webstore_api/items/publish/) 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.```js
// in your webpack.config.js
new PublishExtensionPlugin({
target: 'trustedTesters',
})
```### `path`
Type: `String`
Default: [`webpack.output.path`](https://webpack.js.org/configuration/output/#output-path)The path containing the build of your extension. This should include a [manifest file](https://developer.chrome.com/apps/manifest).
```js
// 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.
```js
// in your webpack.config.js
new PublishExtensionPlugin({
keepBundleOnSuccess: true,
})
```### `silent`
Type: `Boolean`
Default: `false`Set this to `true` to suppress logging.
```js
// 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).
```js
// in your webpack.config.js
new PublishExtensionPlugin({
disabled: true,
})
```## Contributing
PRs are welcome! Please see the [contributing guide](.github/CONTRIBUTING.md).
## Publishing a new version
```
GH_TOKEN=xxx npx semantic-release --no-ci
```