This page lists all the commands and options available under the web-ext command line tool.
web-ext has the following commands available; options specific to these commands are included as subsections.
Packages an extension into a
.zip file, ignoring files that are commonly unwanted in packages, such as
.git and other artifacts. The name of the
.zip file is taken from the name field in the WebExtension manifest.
Re-build the extension anytime you edit and save a source file. This allows you to continuously create a package with the most up to date source code.
The type of output to generate when reporting on errors. Choices:
Output only metadata about the extension in JSON.
Format the JSON output so that it's easier to read. This only applies when
--output is set to
Declares that your extension will be self-hosted. This disables messages related to hosting on addons.mozilla.org.
Disables colorful shell characters so that the output only contains plain text.
Treat warnings as errors by exiting non-zero for warnings.
Builds and then temporarily installs an extension on Firefox so it can be tested. By default, this will also watch all extension source files and reload the extension in Firefox as files change.
Allows you to specify a particular version of Firefox to run the WebExtension in. The value can be an absolute path to the Firefox executable or it can be an alias string. If this is not specified, it will attempt to run the extension inside the default installation of Firefox on the system.
Here is an example of specifying a full path to a Firefox executable on Windows:
--firefox="C:\Program Files\Mozilla Firefox\firefox.exe"
Here is an example of specifying an executable path on Mac OS:
You can also use aliases, like this:
Here are all available aliases and the executables they map to:
||The release build of Firefox|
||The beta build of Firefox|
||The nightly build of Firefox|
||The developer build of Firefox|
Allows you to specify a base Firefox profile to run the WebExtension in. This is specified as a string containing your profile name or an absolute path to its directory. The profile you specify is copied into a new temporary profile and some settings are added that are required for
web-ext to function.
If a profile is not specified, it will run the extension using a new temporary profile.
Do not automatically reload the extension in the browser as you edit and save source files.
Pre-install the extension into the profile before starting the browser. This is a way to support Firefox versions less than 49 since they do not support remote installation. Specifying this option implies
Customize any Firefox preference without creating or modifying the profile. Use the equal sign to set values, for example:
You can specify this option multiple times to set more than one preference.
This automatically opens a Browser Console on startup so you can see log messages for your extension. Example:
web-ext run --browser-console
This will automatically open a tab at the specified URL when the browser starts up. Example:
web-ext run --start-url www.mozilla.com
You can declare this option multiple times to open multiple tabs. Example:
web-ext run --start-url www.mozilla.com --start-url developer.mozilla.org
Packages an extension and signs it so it can be self-hosted. This will create a signed
.xpi file instead of a
.zip file. You will need to create API access credentials to run this command.
The signing API URL prefix. This should always be a string. If not specified, this will default to
https://addons.mozilla.org/api/v3 which is the production API.
A proxy host to use for all API connections. Example:
https://yourproxy:6000. Read more about how proxy requests work. There is a separate section about signing in a restricted environment if the proxy approach doesn't work for you.
Number of milleseconds to wait before giving up on a response from Mozilla's web service. This should always be a number.
A custom identifier string for the extension. This has no effect if the extension already declares an identifier in its manifest. This option may be useful for signing versions of an exisiting extension that you own.
web-ext has the following global options that may apply to multiple commands.
Specifies a particular directory to save artifacts in, e.g the
.zip file, once you've built a WebExtension. This can be specified as a relative or absolute path, and should always be a string.
Note: If this is not specified, the default is the relative path
A list of glob patterns to define which files should be ignored by
lint and other commands. If you specify relative paths, they will be relative to your
Here is an example of ignoring any file within your
--source-dir (or its subdirectories) that ends in the suffix
web-ext build --ignore-files "**/*.api-key"
You can specify multiple patterns by separating them with spaces:
web-ext build --ignore-files path/to/first.js path/to/second.js
By default, without the use of
--ignore-files, the following rules are applied:
- Any file ending in
- Any hidden file (one that starts with a dot) is ignored
- Any directory named
When you specify custom patterns using
--ignore-files, they are applied in addition to the default patterns.
Note: Order is important: you must specify the web-ext command before specifying the --ignore-files option.
Lists all the available commands and options available for the web-ext tool.
Note: You can list the options available for a specific command by including the command name as you request help, for example
web-ext --help run.
Specifies the directory of the WebExtension's source code, e.g. when building or running a WebExtension. This can be specified as a relative or absolute path, and should always be a string.
Note: If this is not specified, the default is the directory you are currently inside in your terminal.
Shows verbose output when commands are run.
Shows the version number of the installed web-ext tool.
Setting option environment variables
Environment variables can be set for any option. You:
- Take the option name.
- Remove the two dashes at the start.
- Convert the remaining dashes to underscores.
- Capitalize the letters.
- Prefix the result with
So, for example, instead of specifying the following source option every time you wish to run the extension:
web-ext run --source-dir=/path/to/my/extension
You could set the source directory as an environment variable like this:
Then you can just specify the run command without options:
A command line option will always override the environment variable. For example, this ignores the environment variable:
web-ext run --source-dir=/another/path/to/source
To define a
false flag option (which does not have a value on the command line), set it to a literal string value of either