A robust, modern starter template for building Chrome extensions using TypeScript, Webpack, and best practices for browser extension development.
To create a new project, run the following command:
npx create-typescript-extension <project-name>or to create a project in the current directory, run the following command:
npx create-typescript-extension .To install the CLI to the system, run the following command:
npm install -g create-typescript-extensionand then you can use the CLI to create a new project by running the following command:
create-typescript-extension <project-name>- 🔧 TypeScript support
- 📦 Webpack bundling
- 🌐 Content script and service worker integration
- 🔒 Secure content security policy
- 🔑 Manifest v3
- 🔥 Hot reloading in development mode
- Node.js (v18+ recommended)
- npm or yarn
- Chrome Browser (or any other Chromium based browser)
yarn devyarn build- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the project directory
- You don't need to select the
distdirectory, it's already set in the manifest.json
├── src/
│ ├── content/
│ │ └── index.ts # Content script entry point
│ └── worker/
│ └── index.ts # Service worker entry point
├── dist/ # Compiled extension files
├── webpack.config.js # Webpack configuration
├── tsconfig.json # TypeScript configuration
└── manifest.json # Chrome extension manifest
The extension requests the following Chrome permissions by default. You can modify the permissions in the manifest.json file.
scriptingactiveTabstoragedeclarativeNetRequesttabs
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Harshit Budhraja - @harshitbudhraja on X (previously, Twitter)
Note: This is a starter template. Remember to customize it to fit your specific extension's needs!