Vite plugin that lets you specify `manifest.json` properties to appear only in specific browsers.
npm install vite-plugin-wext-manifestVite Plugin for Webextension manifest
Generate browser tailored manifest.json for Web Extensions that you specify properties to appear only in specific browsers.
❤️ it? ⭐️ it on GitHub or Tweet about it.
- Browser Support
- Installation
- Usage
- FAQs
- Issues
- 🐛 Bugs
- LICENSE
|  |  |  |  |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ✔ | ✔ | ✔ | ✔ |
This loader will take a definition input for the manifest, and return you content for the specified browser.
Checkout web-extension-starter that uses this package
Ensure you have Node.js 18 or later installed. Then run the following:
``shvia npm
npm install --save-dev vite-plugin-wext-manifest
Usage
You can easily use this module to output the
manifest.json as part of your build process with auto rebundling on file change.Note: Make sure you pass a TARGET_BROWSER env variable with one of
chrome/firefox/edge/brave/opera/vivaldi/arc/yandex value#### Sample manifest with vendor prefixed keys
> vite.config.ts
`js
// ... other plugins
import vitePluginWextManifest from "./vite-plugin-wext-manifest";export default defineConfig(({ mode }) => {
const sourcePath = path.resolve(__dirname, "source");
return {
root: sourcePath,
plugins: [
vitePluginWextManifest({
manifestPath: "manifest.json",
usePackageJSONVersion: true,
}),
// ...
],
}
});
`Options
$3
Type:
StringPath to the manifest.json to transform.
$3
Type:
Boolean
Default: falseIf true, updates manifest.json
version field with package.json version. It is often useful for easy release of web-extension.
FAQs
$3
Vendor prefixed manifest keys allow you to write one
manifest.json for multiple vendors.`js
{
"__chrome__name": "AwesomeChrome",
"__firefox__name": "AwesomeFirefox",
"__edge__name": "AwesomeEdge",
"__opera__name": "AwesomeOpera"
}
`if the TARGET_BROWSER is
chrome this compiles to:`js
{
"name": "AwesomeChrome",
}
`---
Add keys to multiple vendors by seperating them with
| in the prefix`
{
__chrome|opera__name: "AwesomeExtension"
}
`if the vendor is
chrome or opera, this compiles to:`
{
"name": "AwesomeExtension"
}
`$3
`js
{
"__dev__name": "NameInDevelopment",
"__prod__name": "NameInProduction",
"__chrome|firefox|dev__description": "DescriptionInDevelopmentForSetOfBrowsers",
"__chrome|firefox|prod__description": "DescriptionInProductionForSetOfBrowsers"
}
`if the NODE_ENV is
production and the TARGET_BROWSER is chrome this compiles to:`js
{
"name": "NameInProduction",
"description": "DescriptionInProductionForSetOfBrowsers"
}
`else
`js
{
"name": "NameInDevelopment",
"description": "DescriptionInDevelopmentForSetOfBrowsers"
}
`Issues
_Looking to contribute? Look for the Good First Issue
label._
$3
Please file an issue here for bugs, missing documentation, or unexpected behavior.
$3
@abhijithvijayan/eslint-config
- Shared TypeScript Configuration - @abhijithvijayan/tsconfig`MIT © Abhijith Vijayan