Il s'agit d'un outil de ligne de commande permettant de créer, d'exécuter et de tester des WebExtensions.
En fin de compte, il vise à prendre en charge les extensions de navigateur de manière standard, portable et multiplateforme. Dans un premier temps, il offrira une expérience simplifiée pour le développement d'extensions Firefox.
Voici les commandes que vous pouvez exécuter. Cliquez sur chacun d'eux pour une documentation détaillée ou utilisez --help
sur la ligne de commande, comme web-ext build --help
.
run
lint
sign
build
docs
web-ext
dans un navigateur Tout d’abord, assurez-vous que vous exécutez la version LTS (support à long terme) actuelle de NodeJS.
Vous pouvez installer cette commande sur votre machine globalement avec :
npm install --global web-ext
Vous pouvez également installer cette commande comme l’une des devDependencies
de votre projet. Cette méthode peut vous aider à contrôler la version de web-ext
utilisée par votre équipe.
npm install --save-dev web-ext
Ensuite, vous pouvez utiliser la commande web-ext
dans votre projet en tant que script npm. Voici un exemple où l'argument --source-dir
spécifie où trouver le code source de votre extension.
package.json
"scripts" : {
"start:firefox" : " web-ext run --source-dir ./extension-dist/ " ,
}
Vous pouvez toujours transmettre des commandes supplémentaires à vos scripts npm en utilisant le suffixe --
. Par exemple, le script précédent pourrait spécifier la version de Firefox sur la ligne de commande avec ceci :
npm run start:firefox -- --firefox=nightly
La communauté maintient une formule web-ext
.
brew install web-ext
Vous aurez besoin de :
En option, vous aimerez peut-être :
Si vous aviez déjà installé web-ext
depuis npm, vous devrez peut-être d'abord le désinstaller :
npm uninstall --global web-ext
Accédez aux sources et installez toutes les dépendances :
git clone https://github.com/mozilla/web-ext.git
cd web-ext
npm ci
Construisez la commande :
npm run build
Liez-le à l'installation de votre nœud :
npm link
Vous pouvez maintenant l'exécuter depuis n'importe quel répertoire :
web-ext --help
Pour obtenir des mises à jour, extrayez simplement les modifications et reconstruisez l'exécutable. Vous n'avez pas besoin de le reconnecter.
cd /path/to/web-ext
git pull
npm run build
Remarque : La prise en charge de cette API est limitée.
En plus d'utiliser web-ext sur la ligne de commande, vous souhaiterez peut-être exécuter web-ext
dans le code NodeJS.
À partir de la version 7.0.0
, le package web-ext
npm exporte uniquement les modules ES natifs de NodeJS. Si vous utilisez CommonJS, vous devrez utiliser des importations dynamiques.
Vous êtes capable d'exécuter des fonctions de commande sans aucune validation d'argument. Si vous souhaitez exécuter web-ext run
vous le feriez comme ceci :
import webExt from 'web-ext' ;
webExt . cmd
. run (
{
// These are command options derived from their CLI conterpart.
// In this example, --source-dir is specified as sourceDir.
firefox : '/path/to/Firefox-executable' ,
sourceDir : '/path/to/your/extension/source/' ,
} ,
{
// These are non CLI related options for each function.
// You need to specify this one so that your NodeJS application
// can continue running after web-ext is finished.
shouldExitProgram : false ,
} ,
)
. then ( ( extensionRunner ) => {
// The command has finished. Each command resolves its
// promise with a different value.
console . log ( extensionRunner ) ;
// You can do a few things like:
// extensionRunner.reloadAllExtensions();
// extensionRunner.exit();
} ) ;
Si vous souhaitez exécuter une extension sur Firefox pour Android :
import * as adbUtils from "web-ext/util/adb" ;
// Path to adb binary (optional parameter, auto-detected if missing)
const adbBin = "/path/to/adb" ;
// Get an array of device ids (Array<string>)
const deviceIds = await adbUtils . listADBDevices ( adbBin ) ;
const adbDevice = ...
// Get an array of Firefox APKs (Array<string>)
const firefoxAPKs = await adbUtils . listADBFirefoxAPKs (
deviceId , adbBin
) ;
const firefoxApk = ...
webExt . cmd . run ( {
target : 'firefox-android' ,
firefoxApk ,
adbDevice ,
sourceDir : ...
} ) . then ( ( extensionRunner ) => { ... } ) ;
Si vous souhaitez contrôler la journalisation, vous pouvez accéder à l'objet enregistreur. Voici un exemple d'activation de la journalisation détaillée :
import * as webExtLogger from 'web-ext/util/logger' ;
webExtLogger . consoleStream . makeVerbose ( ) ;
webExt . cmd . run ( { sourceDir : './src' } , { shouldExitProgram : false } ) ;
Vous pouvez également désactiver l'utilisation de l'entrée standard :
webExt . cmd . run ( { noInput : true } , { shouldExitProgram : false } ) ;
web-ext
est conçu pour les WebExtensions, mais vous pouvez essayer de désactiver la validation du manifeste pour fonctionner avec les extensions héritées. Ceci n'est pas officiellement pris en charge.
webExt . cmd . run (
{ sourceDir : './src' } ,
{
getValidatedManifest : ( ) => ( {
name : 'some-fake-name' ,
version : '1.0.0' ,
} ) ,
shouldExitProgram : false ,
} ,
) ;
Oui! L'outil web-ext vous permet de créer et de livrer des extensions pour Firefox. Cette plate-forme s'est stabilisée dans Firefox 48, sorti en avril 2016.
Salut! Cet outil est en cours de développement actif. Pour vous impliquer, vous pouvez regarder le dépôt, signaler des problèmes, créer des demandes d'extraction ou nous contacter pour poser une question. Lisez la section de contribution pour savoir comment développer de nouvelles fonctionnalités.
C’est une excellente question que nous nous poserons à chaque nouvelle fonctionnalité web-ext. La plupart des fonctionnalités de WebExtension sont intégrées aux navigateurs eux-mêmes, mais un outil de ligne de commande gratuit sera toujours utile. Voici une liste partielle d’exemples :