- Clone this repository.
- Install pnpm globally:
npm install -g pnpm
(check your node version >= 18.12.0) - Run
pnpm install
- Run:
- Dev:
pnpm dev
- When you run with Windows, you should run as administrator. (Issue#456)
- Prod:
pnpm build
- Dev:
- Open in browser -
chrome://extensions
- Check -
Developer mode
- Find and Click -
Load unpacked extension
- Select -
dist
folder at root
- Run:
- Dev:
pnpm dev:firefox
- Prod:
pnpm build:firefox
- Dev:
- Open in browser -
about:debugging#/runtime/this-firefox
- Find and Click -
Load Temporary Add-on...
- Select -
manifest.json
fromdist
folder at root
Remember in firefox you add plugin in temporary mode, that's mean it's disappear after close browser, you must do it again, on next launch.
Main app with background script, manifest
manifest.js
- manifest for chrome extensionlib/background
- background script for chrome extension (background.service_worker
in manifest.json)public/content.css
- content css for user's page injection
Some shared packages
dev-utils
- utils for chrome extension development (manifest-parser, logger)i18n
- custom i18n package for chrome extension. provide i18n function with type safety and other validation.hmr
- custom HMR plugin for vite, injection script for reload/refresh, hmr dev-servertailwind-config
- shared tailwind config for entire projecttsconfig
- shared tsconfig for entire projectui
- here's a function to merge your tailwind config with global one, and you can save components herevite-config
- shared vite config for entire projectzipper
- Bypnpm zip
you can packdist
folder intoextension.zip
inside newly createddist-zip
content
- content script for chrome extension (content_scripts
in manifest.json)popup
- popup for chrome extension (action.default_popup
in manifest.json)
This project used chrome-extension-boilerplate-react-vite as a starter