Esta é uma ferramenta de linha de comando para ajudar a construir, executar e testar WebExtensions.
Em última análise, seu objetivo é oferecer suporte a extensões de navegador de maneira padrão, portátil e multiplataforma. Inicialmente, fornecerá uma experiência simplificada para o desenvolvimento de extensões do Firefox.
Aqui estão os comandos que você pode executar. Clique em cada um para obter documentação detalhada ou use --help
na linha de comando, como web-ext build --help
.
run
lint
sign
build
docs
web-ext
em um navegador Primeiro, certifique-se de estar executando a versão LTS (suporte de longo prazo) atual do NodeJS.
Você pode instalar este comando em sua máquina globalmente com:
npm install --global web-ext
Alternativamente, você pode instalar este comando como uma das devDependencies
do seu projeto. Este método pode ajudá-lo a controlar a versão do web-ext
usada por sua equipe.
npm install --save-dev web-ext
Em seguida, você pode usar o comando web-ext
em seu projeto como um script npm. Aqui está um exemplo onde o argumento --source-dir
especifica onde encontrar o código-fonte da sua extensão.
package.json
"scripts" : {
"start:firefox" : " web-ext run --source-dir ./extension-dist/ " ,
}
Você sempre pode passar comandos adicionais para seus scripts npm usando o sufixo --
. Por exemplo, o script anterior poderia especificar a versão do Firefox na linha de comando com isto:
npm run start:firefox -- --firefox=nightly
A comunidade mantém uma fórmula web-ext
.
brew install web-ext
Você precisará de:
Opcionalmente, você pode gostar de:
Se você já instalou web-ext
do npm, pode ser necessário desinstalá-lo primeiro:
npm uninstall --global web-ext
Mude para a fonte e instale todas as dependências:
git clone https://github.com/mozilla/web-ext.git
cd web-ext
npm ci
Construa o comando:
npm run build
Vincule-o à instalação do seu nó:
npm link
Agora você pode executá-lo em qualquer diretório:
web-ext --help
Para obter atualizações, basta extrair as alterações e reconstruir o executável. Você não precisa vinculá-lo novamente.
cd /path/to/web-ext
git pull
npm run build
Observação: há suporte limitado para esta API.
Além de usar web-ext na linha de comando, você pode executar web-ext
no código NodeJS.
A partir da versão 7.0.0
, o pacote web-ext
npm exporta apenas módulos ES nativos do NodeJS. Se estiver usando CommonJS, você terá que usar importações dinâmicas.
Você é capaz de executar funções de comando sem qualquer validação de argumento. Se você quiser executar web-ext run
faça assim:
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();
} ) ;
Se você gostaria de executar uma extensão no Firefox para 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 ) => { ... } ) ;
Se desejar controlar o registro em log, você pode acessar o objeto logger. Aqui está um exemplo de ativação do registro detalhado:
import * as webExtLogger from 'web-ext/util/logger' ;
webExtLogger . consoleStream . makeVerbose ( ) ;
webExt . cmd . run ( { sourceDir : './src' } , { shouldExitProgram : false } ) ;
Você também pode desativar o uso da entrada padrão:
webExt . cmd . run ( { noInput : true } , { shouldExitProgram : false } ) ;
web-ext
foi projetado para WebExtensions, mas você pode tentar desabilitar a validação de manifesto para trabalhar com extensões legadas. Isso não é oficialmente suportado.
webExt . cmd . run (
{ sourceDir : './src' } ,
{
getValidatedManifest : ( ) => ( {
name : 'some-fake-name' ,
version : '1.0.0' ,
} ) ,
shouldExitProgram : false ,
} ,
) ;
Sim! A ferramenta web-ext permite criar e enviar extensões para Firefox. Esta plataforma foi estabilizada no Firefox 48, lançado em abril de 2016.
Oi! Esta ferramenta está em desenvolvimento ativo. Para participar, você pode assistir ao repositório, registrar problemas, criar solicitações pull ou entrar em contato conosco para fazer uma pergunta. Leia a seção de contribuições para saber como desenvolver novos recursos.
Esta é uma ótima pergunta que nos faremos a cada novo recurso do web-ext. A maior parte da funcionalidade do WebExtension está incorporada nos próprios navegadores, mas uma ferramenta de linha de comando complementar ainda será útil. Aqui está uma lista parcial de exemplos: