{"id":26414935,"url":"https://github.com/gabeduartem/semantic-release-chrome","last_synced_at":"2025-03-18T00:16:48.160Z","repository":{"id":42596510,"uuid":"130594274","full_name":"GabeDuarteM/semantic-release-chrome","owner":"GabeDuarteM","description":"Set of semantic-release plugins for publishing a Chrome extension release","archived":false,"fork":false,"pushed_at":"2024-02-21T22:52:23.000Z","size":538,"stargazers_count":46,"open_issues_count":19,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-06T07:11:17.508Z","etag":null,"topics":["chrome","chrome-webstore","google","plugin","semantic-release","semantic-release-plugin","webstore"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/semantic-release-chrome","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GabeDuarteM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-22T18:09:09.000Z","updated_at":"2024-12-19T12:42:17.000Z","dependencies_parsed_at":"2024-06-18T18:18:33.014Z","dependency_job_id":"430bfba1-6e87-48e8-8110-1e978070c663","html_url":"https://github.com/GabeDuarteM/semantic-release-chrome","commit_stats":null,"previous_names":["gabrielduartem/semantic-release-chrome"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabeDuarteM%2Fsemantic-release-chrome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabeDuarteM%2Fsemantic-release-chrome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabeDuarteM%2Fsemantic-release-chrome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabeDuarteM%2Fsemantic-release-chrome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GabeDuarteM","download_url":"https://codeload.github.com/GabeDuarteM/semantic-release-chrome/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244130303,"owners_count":20402756,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome","chrome-webstore","google","plugin","semantic-release","semantic-release-plugin","webstore"],"created_at":"2025-03-18T00:16:47.671Z","updated_at":"2025-03-18T00:16:48.152Z","avatar_url":"https://github.com/GabeDuarteM.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003esemantic-release-chrome\u003c/h1\u003e\n\n  \u003cp\u003eSet of semantic-release plugins for publishing a Chrome extension release\u003c/p\u003e\n\u003c/div\u003e\n\n\u003chr /\u003e\n\n[![Build Status][build-badge]][build]\n[![version][version-badge]][package]\n[![downloads][downloads-badge]][npmtrends]\n[![MIT License][license-badge]][license]\n\n[![PRs Welcome][prs-badge]][prs]\n[![Code of Conduct][coc-badge]][coc]\n\n[![Watch on GitHub][github-watch-badge]][github-watch]\n[![Star on GitHub][github-star-badge]][github-star]\n[![Tweet][twitter-badge]][twitter]\n\n## Installation\n\nThis module is distributed via [npm][npm] which is bundled with [node][node] and\nshould be installed as one of your project's `devDependencies`:\n\n```bash\nnpm install --save-dev semantic-release-chrome\n```\n\n## Description\n\nThis package provides a set of [`semantic-release`][semantic-release] plugins for you to easily publish Chrome extensions automatically.\nBesides creating a release on the Chrome webstore, it also writes the correct version to the `manifest.json` and creates a zip file containing everything inside the dist folder, so you can use the official `@semantic-release/github` plugin and upload the release to the GitHub releases page, so your users can easily rollback to an earlier version if a newer one introduces a bad bug.\n\n## Usage\n\nThis package export the following plugins:\n\n### `verifyConditions`\n\nVerify the presence of the authentication parameters, which are set via environment variables (see [Chrome webstore authentication][chrome-authentication]).\n\n#### `verifyConditions` parameters\n\n- `extensionId`: **REQUIRED** parameter. The `extension id` from the webstore. For example: If the url of your extension is [https://chrome.google.com/webstore/detail/webplayer-hotkeys-shortcu/ikmkicnmahfdilneilgibeppbnolgkaf](https://chrome.google.com/webstore/detail/webplayer-hotkeys-shortcu/ikmkicnmahfdilneilgibeppbnolgkaf), then the last portion, `ikmkicnmahfdilneilgibeppbnolgkaf`, will be the `extension id`. You can also take this ID on the [developers dashboard](https://chrome.google.com/webstore/developer/dashboard), under the name `Item ID` located inside the `More info` dialog. This is used so that we can confirm that the credentials are working for the extension you are trying to publish.\n\n- `target`: Valid options are:\n  - `local`: Skips Chrome store credentials verification\n\n### `prepare`\n\nWrites the correct version to the `manifest.json` and creates a `zip` file with everything inside the `dist` folder.\n\nThis plugin requires some parameters to be set, so be sure to check below and fill them accordingly.\n\n#### `prepare` parameters\n\n- `asset`: **REQUIRED** parameter. The filename of the zip file.\n\n- `distFolder`: The folder that will be zipped. Defaults to `dist`.\n\n- `manifestPath`: The path of the `manifest.json` file inside the dist folder. Defaults to `\u003cdistFolder parameter\u003e/manifest.json`.\n\nThe `asset` parameter is parsed with Lodash template. The following variables are available: `branch`, `lastRelease`, `nextRelease` and `commits`. Search on the [plugins](https://github.com/semantic-release/semantic-release/blob/master/docs/developer-guide/plugin.md) documentation to see the type of those objects.\n\nExample: `my-extension_v${nextRelease.version}_${branch.name}.zip` will result in something like `my-extension_v2.3.1_main.zip`\n\n### `publish`\n\nUploads the generated zip file to the webstore and publishes a new release.\n\nUnfortunately, due to Google's restrictions, this plugin can only publish extensions that already exists on the store, so you will have to at least make a draft release for yourself, so the plugin can create a proper release for the first time. You can create a draft release with just a minimum `manifest.json` with version `0.0.1` compressed in a zip file.\nIf you decide to make the draft, make sure to fill all the required fields on the drafts page, otherwise the publish will fail with a `400` status code (Bad request).\n\n#### `publish` parameters\n\n- `extensionId`: **REQUIRED** parameter. The `extension id` from the webstore. For example: If the url of your extension is [https://chrome.google.com/webstore/detail/webplayer-hotkeys-shortcu/ikmkicnmahfdilneilgibeppbnolgkaf](https://chrome.google.com/webstore/detail/webplayer-hotkeys-shortcu/ikmkicnmahfdilneilgibeppbnolgkaf), then the last portion, `ikmkicnmahfdilneilgibeppbnolgkaf`, will be the `extension id`. You can also take this ID on the [developers dashboard](https://chrome.google.com/webstore/developer/dashboard), under the name `Item ID` located inside the `More info` dialog.\n\n- `asset`: **REQUIRED** parameter. The zip file that will be published to the chrome webstore.\n\n- `target`: Valid options are:\n  - `default`: The extension will be publicly available to everyone. This is the default option if left blank.\n  - `draft`: Uploads the extension to the webstore, but skips the publishing step.\n  - `trustedTesters`: Releases the extension as a [private extension](https://support.google.com/chrome/a/answer/2663860). Defaults to `default`.\n  - `local`: Skips the publish step\n\nThe `asset` parameter is parsed with Lodash template. The following variables are available: `branch`, `lastRelease`, `nextRelease` and `commits`. Search on the [plugins](https://github.com/semantic-release/semantic-release/blob/master/docs/developer-guide/plugin.md) documentation to see the type of those objects.\n\nExample: `my-extension_v${nextRelease.version}_${branch.name}.zip` will result in something like `my-extension_v2.3.1_main.zip`\n\n### Chrome webstore authentication\n\nYou will need to get three parameters from the Google API: a `clientId`, a `clientSecret` and a `refreshToken`. For more information on how to get those parameters and how to set the environment variables which are required in order for this plugin to work properly, read [this guide](Authentication.md).\n\n### Release configs\n\nUse `semantic-release-chrome` as part of `verifyConditions`, `prepare` and `publish`.\n\nA basic configuration file example is available below:\n\n```json\n{\n  \"plugins\": [\n    [\n      \"semantic-release-chrome\",\n      {\n        \"extensionId\": \"mppjhhbajcciljocgbadbhbgphjfdmhj\",\n        \"asset\": \"my-extension.zip\"\n      }\n    ],\n    [\n      \"@semantic-release/github\",\n      {\n        \"assets\": [\"my-extension.zip\"]\n      }\n    ]\n  ]\n}\n```\n\nFor more info about each config, see the parameters for each [plugin](#usage).\n\nFor more info on the configuration file, see the [configuration file][configuration-file] documentation on the [`semantic-release`][semantic-release] repository.\n\n## LICENSE\n\nMIT\n\n[npm]: https://www.npmjs.com/\n[node]: https://nodejs.org\n[build-badge]: https://github.com/GabrielDuarteM/semantic-release-chrome/workflows/CI/badge.svg\n[build]: https://github.com/GabrielDuarteM/semantic-release-chrome/actions\n[coverage-badge]: https://img.shields.io/codecov/c/github/GabrielDuarteM/semantic-release-chrome.svg\n[coverage]: https://codecov.io/github/GabrielDuarteM/semantic-release-chrome\n[version-badge]: https://img.shields.io/npm/v/semantic-release-chrome.svg\n[package]: https://www.npmjs.com/package/semantic-release-chrome\n[downloads-badge]: https://img.shields.io/npm/dm/semantic-release-chrome.svg\n[npmtrends]: http://www.npmtrends.com/semantic-release-chrome\n[license-badge]: https://img.shields.io/github/license/GabrielDuarteM/semantic-release-chrome.svg\n[license]: https://github.com/GabrielDuarteM/semantic-release-chrome/blob/master/LICENSE\n[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg\n[prs]: http://makeapullrequest.com\n[donate-badge]: https://img.shields.io/badge/$-support-green.svg\n[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg\n[coc]: https://github.com/GabrielDuarteM/semantic-release-chrome/blob/master/other/CODE_OF_CONDUCT.md\n[github-watch-badge]: https://img.shields.io/github/watchers/GabrielDuarteM/semantic-release-chrome.svg?style=social\n[github-watch]: https://github.com/GabrielDuarteM/semantic-release-chrome/watchers\n[github-star-badge]: https://img.shields.io/github/stars/GabrielDuarteM/semantic-release-chrome.svg?style=social\n[github-star]: https://github.com/GabrielDuarteM/semantic-release-chrome/stargazers\n[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20semantic-release-chrome%20by%20%40GabrielDuarteM%20https%3A%2F%2Fgithub.com%2FGabrielDuarteM%2Fsemantic-release-chrome%20%F0%9F%91%8D\n[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/GabrielDuarteM/semantic-release-chrome.svg?style=social\n[semantic-release]: https://github.com/semantic-release/semantic-release\n[chrome-authentication]: #chrome-webstore-authentication\n[configuration-file]: https://github.com/semantic-release/semantic-release/blob/master/docs/usage/configuration.md#configuration-file\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabeduartem%2Fsemantic-release-chrome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabeduartem%2Fsemantic-release-chrome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabeduartem%2Fsemantic-release-chrome/lists"}