Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/abhijithvijayan/web-extension-starter
π₯πWeb Extension starter to build "Write Once Run on Any Browser" extension
https://github.com/abhijithvijayan/web-extension-starter
boilerplate chrome chrome-extension chrome-extension-react cross-browser edge extension firefox firefox-addon hacktoberfest opera-extension react-extension reactjs sass starter typescript web web-extension-starter web-extensions webpack4
Last synced: 6 days ago
JSON representation
π₯πWeb Extension starter to build "Write Once Run on Any Browser" extension
- Host: GitHub
- URL: https://github.com/abhijithvijayan/web-extension-starter
- Owner: abhijithvijayan
- License: mit
- Created: 2019-09-16T15:33:44.000Z (about 5 years ago)
- Default Branch: react-typescript
- Last Pushed: 2024-01-30T23:37:49.000Z (11 months ago)
- Last Synced: 2024-11-29T14:11:42.823Z (13 days ago)
- Topics: boilerplate, chrome, chrome-extension, chrome-extension-react, cross-browser, edge, extension, firefox, firefox-addon, hacktoberfest, opera-extension, react-extension, reactjs, sass, starter, typescript, web, web-extension-starter, web-extensions, webpack4
- Language: JavaScript
- Homepage:
- Size: 2.65 MB
- Stars: 2,036
- Watchers: 20
- Forks: 171
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- my-awesome-list - web-extension-starter
- awesome-boilerplate - Web Extension Starter
- awesome-list - web-extension-starter
- awesome-hacking-lists - abhijithvijayan/web-extension-starter - π₯πWeb Extension starter to build "Write Once Run on Any Browser" extension (JavaScript)
README
π web-extension-starter
Web Extension starter to build "Write Once Run on Any Browser" extension
πββοΈ Made by @abhijithvijayan
β€οΈ it? βοΈ it on [GitHub](https://github.com/abhijithvijayan/web-extension-starter) or [Tweet](https://twitter.com/intent/tweet?text=Check%20out%20web-extension-starter%21%20by%20%40_abhijithv%0A%0AWeb%20Extension%20starter%20to%20build%20%22Write%20Once%20Run%20on%20Any%20Browser%22%20extension.%20https%3A%2F%2Fgithub.com%2Fabhijithvijayan%2Fweb-extension-starter%0A%0A%23javascript%20%23react%20%23typescript%20%23sass%20%23webextension%20%23chrome%20%23firefox%20%23opera) about it.
π§ββοΈ **React + TypeScript** = [This](https://github.com/abhijithvijayan/web-extension-starter/tree/react-typescript) branch
π¨ **React + JavaScript** = Checkout [react-javascript](https://github.com/abhijithvijayan/web-extension-starter/tree/react-javascript) branch
πΆπΌ **HTML + JavaScript** = Checkout [master](https://github.com/abhijithvijayan/web-extension-starter/tree/master) branch
## Features
- Cross Browser Support (Web-Extensions API)
- Browser Tailored Manifest generation
- Automatic build on code changes
- Auto packs browser specific build files
- SASS styling
- TypeScript by default
- ES6 modules support
- React UI Library by default
- Smart reload## Browser Support
| [![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png)](/) | [![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png)](/) | [![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png)](/) | [![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png)](/) | [![Yandex](https://raw.github.com/alrra/browser-logos/master/src/yandex/yandex_48x48.png)](/) | [![Brave](https://raw.github.com/alrra/browser-logos/master/src/brave/brave_48x48.png)](/) | [![vivaldi](https://raw.github.com/alrra/browser-logos/master/src/vivaldi/vivaldi_48x48.png)](/) |
| --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ |
| 49 & later β | 52 & later β | 36 & later β | 79 & later β | Latest β | Latest β | Latest β |## Used by extensions in production that has over 100,000+ users.
- [daily.dev](https://daily.dev) in [daily.dev extension](https://r.daily.dev/get)
- [Jiffy Reader](https://chrome.google.com/webstore/detail/jiffy-reader/lljedihjnnjjefafchaljkhbpfhfkdic) in [ansh/jiffyreader.com](https://github.com/ansh/jiffyreader.com)
- [kutt-extension](https://chrome.google.com/webstore/detail/kutt/pklakpjfiegjacoppcodencchehlfnpd) in [abhijithvijayan/kutt-extension](https://github.com/abhijithvijayan/kutt-extension)
- [doubanIMDb](https://chrome.google.com/webstore/detail/doubanimdb/nfibbjnhkbjlgjaojglmmibdjicidini) in [lisongx/doubanIMDb](https://github.com/lisongx/doubanIMDb)
- [Mooc Assistant](https://chrome.google.com/webstore/detail/mooc-assistant/oebggekgendmoeedkkdkdcdbmfbfeldc) in [unbyte/mooc-assistant](https://github.com/unbyte/mooc-assistant)
- ArtiPub in [crawlab-team/artipub](https://github.com/crawlab-team/artipub/tree/master/extensions)and many more...
## Use this template
Create a new directory and run
```
curl -fsSL https://github.com/abhijithvijayan/web-extension-starter/archive/react-typescript.tar.gz | tar -xz --strip-components=1
```## π Quick Start
Ensure you have
- [Node.js](https://nodejs.org) 10 or later installed
Then run the following:
- `npm install` to install dependencies.
- `npm run dev:chrome` to start the development server for chrome extension
- `npm run dev:firefox` to start the development server for firefox addon
- `npm run dev:opera` to start the development server for opera extension
- `npm run build:chrome` to build chrome extension
- `npm run build:firefox` to build firefox addon
- `npm run build:opera` to build opera extension
- `npm run build` builds and packs extensions all at once to extension/ directory### Development
- `npm install` to install dependencies.
- To watch file changes in development- Chrome
- `npm run dev:chrome`
- Firefox
- `npm run dev:firefox`
- Opera
- `npm run dev:opera`- **Load extension in browser**
- ### Chrome
- Go to the browser address bar and type `chrome://extensions`
- Check the `Developer Mode` button to enable it.
- Click on the `Load Unpacked Extensionβ¦` button.
- Select your browsers folder in `extension/`.- ### Firefox
- Load the Add-on via `about:debugging` as temporary Add-on.
- Choose the `manifest.json` file in the extracted directory- ### Opera
- Load the extension via `opera:extensions`
- Check the `Developer Mode` and load as unpacked from extensionβs extracted directory.### Production
- `npm run build` builds the extension for all the browsers to `extension/BROWSER` directory respectively.
Note: By default the `manifest.json` is set with version `0.0.0`. The webpack loader will update the version in the build with that of the `package.json` version. In order to release a new version, update version in `package.json` and run script.
If you don't want to use `package.json` version, you can disable the option [here](https://github.com/abhijithvijayan/web-extension-starter/blob/e10158c4a49948dea9fdca06592876d9ca04e028/webpack.config.js#L79).
### Generating browser specific manifest.json
Update `source/manifest.json` file with browser vendor prefixed manifest keys
```js
{
"__chrome__name": "SuperChrome",
"__firefox__name": "SuperFox",
"__edge__name": "SuperEdge",
"__opera__name": "SuperOpera"
}
```if the vendor is `chrome` this compiles to:
```js
{
"name": "SuperChrome",
}
```---
Add keys to multiple vendors by separating them with | in the prefix
```
{
__chrome|opera__name: "SuperBlink"
}
```if the vendor is `chrome` or `opera`, this compiles to:
```
{
"name": "SuperBlink"
}
```See the original [README](https://github.com/abhijithvijayan/wext-manifest-loader) of `wext-manifest-loader` package for more details
## Bugs
Please file an issue [here](https://github.com/abhijithvijayan/web-extension-starter/issues/new) for bugs, missing documentation, or unexpected behavior.
### Linting & TypeScript Config
- Shared Eslint & Prettier Configuration - [`@abhijithvijayan/eslint-config`](https://www.npmjs.com/package/@abhijithvijayan/eslint-config)
- Shared TypeScript Configuration - [`@abhijithvijayan/tsconfig`](https://www.npmjs.com/package/@abhijithvijayan/tsconfig)## License
MIT Β© [Abhijith Vijayan](https://abhijithvijayan.in)