crxinit is a modern Chrome extension boilerplate powered by React, Vite, and TypeScript. It helps you quickly scaffold and develop browser extensions with best practices and a fast toolchain.
- background.ts: Runs background services and event listeners. Example: Logs a message on install and listens for messages.
- contentScript.ts: Runs scripts directly on web pages. Example: Highlights all
<h1>elements and appends a label. - popup.html & App.tsx: The popup UI, built with React.
- Vite + TypeScript: Fast development and modern tooling.
Install crxinit globally:
npm install -g crxinitCreate a new extension project:
crxinit my-extension
cd my-extension
npm install
npm run dev- Edit
src/background.tsfor background logic using Chrome APIs. - Edit
src/contentScript.tsfor code that runs on web pages. - Edit
src/App.tsxfor the popup UI.
Build your extension for production:
npm run buildThen load the dist/ folder as an unpacked extension in Chrome:
- Go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
dist/folder
// Content script for crxinit
console.log("[crxinit] Content script loaded!");
// Example: Highlight all <h1> elements
Array.from(document.querySelectorAll('h1')).forEach(el => {
el.style.background = '#ffe066';
el.innerText += ' (highlighted by crxinit)';
});// Background script for crxinit
chrome.runtime.onInstalled.addListener(() => {
console.log('[crxinit] Extension installed!');
});
// Example: Listen for messages
chrome.runtime.onMessage.addListener((message, _, sendResponse) => {
if (message === 'ping') {
sendResponse('pong from background');
}
});Pull requests and suggestions are welcome!
MIT