Create a Production Build
To create a production bundle for distribution, run:
pnpm build
# OR
npm run buildGenerating a zip bundle
To create a production zip bundle ready to be uploaded to the web stores, use the package command:
pnpm package
# OR
npm run packageIf you would like to combine the building and packaging process, use the --zip flag with the build command instead:
pnpm build --zip
# OR
npm run build -- --zipWith a specific target
The build command accepts a --target flag in the form of <browser-name>-<manifest-version>. Use it to specify a browser and manifest version combination to build for:
plasmo build --target=firefox-mv2The final bundle will be available in the build/firefox-mv2-prod directory. You may use any pairs of target browser and manifest version.
For a list of officially supported targets, visit this link. These targets are recognized by the bundler, which will automatically handle some vendor-specific behavior for you.
The --target flag also enables you to:
- Use a target-specific environment file:
.env.<browser-name> - Use a target-specific entry files: e.g
popup.<browser-name>.tsx - Set the process.env.PLASMO_BROWSER to
<browser-name>
The third feature works with deadcode elimination. Thus the following code:
if (process.env.PLASMO_BROWSER === "safari") {
console.log("A")
} else {
console.log("B")
}Will be trimmed down to console.log("A") if the target is safari-mv3.
With a custom tag
Plasmo uses the prod tag for your production build. You can use the --tag flag to change this behavior:
plasmo build --tag=stagingThe command above will:
- Create the bundle in the
build/chrome-mv3-stagingdirectory - Set the
process.env.PLASMO_TAGenvironment variables tostaging - Parse and prioritize
.env.stagingor.env.staging.localif any exist
With source maps
By default, Plasmo does not generate source maps for your production bundle. However, you can use the --source-maps flag to change this behavior:
plasmo build --source-mapsBundle Buddy
If you'd like to analyze your bundle, you can use the --bundle-buddy flag, combined with --source-maps to generate a Bundle Buddy (opens in a new tab) report:
plasmo build --source-maps --bundle-buddyOptimization
To create a bundle with minification disabled:
plasmo build --no-minifyTo create an import-optimized build where the bundle deduplicate and hoist your dependency to the top of the bundle:
plasmo build --hoistNote that hoisting can potentially break your dependency, especially those that import dynamic dependency via a plugin system. However, hoisting can significantly improve the bundling speed and reduce the size of your bundle.
You may combine these flags as needed.