Gostaria que minha extensão do Chrome fosse recarregada toda vez que eu salvar um arquivo na pasta de extensão, sem ter que clicar explicitamente em "recarregar" no chrome: // extensions /. Isso é possível?
Editar: estou ciente de que posso atualizar o intervalo no qual o Chrome recarrega as extensões, o que é uma solução intermediária, mas prefiro fazer meu editor (emacs ou textmate) disparar ao salvar uma recarga ou pedir ao Chrome para monitorar o diretório para alterações.
javascript
google-chrome
google-chrome-extension
Andrey Fedorov
fonte
fonte
Respostas:
Você pode usar o " Extensions Reloader " para Chrome:
Atualização: a partir de 14 de janeiro de 2015, a extensão é de código aberto e está disponível no GitHub .
fonte
http://reload.extensions
quando um arquivo é modificado. Agora ele age exatamente como o carregamento de fígado, mas com uma janela cromada irritante se abrindo cada vez que modifico um dos arquivos de plug-in especificados: P. Obrigado!Atualização : adicionei uma página de opções para que você não precise mais localizar e editar manualmente o ID da extensão. O CRX e o código-fonte estão em: https://github.com/Rob--W/Chrome-Extension-Reloader
Atualização 2: Adicionado atalho (consulte meu repositório no Github).
O código original, que inclui a funcionalidade básica, é mostrado abaixo .
Crie uma extensão e use o método Ação do Navegador em conjunto com o
chrome.extension.management
API para recarregar sua extensão descompactada.O código abaixo adiciona um botão ao Chrome, que recarrega uma extensão ao clicar.
manifest.json
bg.js
icon48.png
: Escolha qualquer ícone legal de 48 x 48, por exemplo:fonte
chrome.i18n.getMessage("@@extension_id")
. No entanto, isso retorna o extensionID da extensão atual , o que não é útil porque uma extensão não pode ser recarregada usando amanagement
API (após a desativação, não é possível ativar a extensão novamente).em qualquer função ou evento
recarregará sua extensão ( documentos ). Você também precisa alterar o arquivo manifest.json , adicionando:
fonte
chrome.runtime.reload()
, o que realmente acontece? várias páginas / guias são atualizadas?chrome.runtime.reload()
partir do script de fundoCriei um script embutido simples para recarregar a quente:
https://github.com/xpl/crx-hotreload
Ele procura alterações de arquivo no diretório de uma extensão. Quando uma alteração é detectada, ela recarrega a extensão e atualiza a guia ativa (para disparar novamente os scripts de conteúdo atualizados).
fonte
npm install crx-hotreload
está no diretório da extensão e depois faz referência ao script como"scripts": ["./node_modules/crx-hotreload/hot-reload.js"]
? Me corrija se eu estiver errado.import reloader from 'hot-reload'
então no script reloader.check ()--watch
, porque você pode simplesmente colocá-lo na pasta de compilação, para que ele só seja atualizado após o término do processo de compilação. Não há plugins de comando pós-compilação Webpack complicados.Outra solução seria criar o script livereload personalizado (extension-reload.js):
Esse script se conecta ao servidor de carregamento de fígado usando websockets. Em seguida, emitirá uma chamada chrome.runtime.reload () ao recarregar a mensagem de livereload. O próximo passo seria adicionar esse script para executar como script em segundo plano no manifest.json e pronto!
Nota: esta não é a minha solução. Estou apenas postando. Encontrei-o no código gerado do gerador de extensão do Chrome (ótima ferramenta!). Estou postando isso aqui porque pode ajudar.
fonte
As extensões do Chrome têm um sistema de permissão que não seria permitido (algumas pessoas no SO tiveram o mesmo problema que você ), portanto, solicitar que "adicione esse recurso" não funcionará na IMO. Há um e-mail dos Grupos do Google das extensões do Chromium com uma solução proposta (teoria) usando
chrome.extension.getViews()
, mas também não é garantido que funcione.Se fosse possível adicionar a
manifest.json
algumas páginas internas do Chromechrome://extensions/
, seria possível criar um plug-in que interagisse com aReload
âncora e, usando um programa externo como o XRefresh (um plug-in do Firefox - existe uma versão do Chrome usando Ruby e WebSocket ), você alcançaria exatamente o que precisa:Não é possível, mas acho que você pode usar esse mesmo conceito de uma maneira diferente.
Você poderia tentar encontrar soluções de terceiros que, depois de ver modificações em um arquivo (não conheço o emacs nem o Textmate, mas no Emacs seria possível vincular uma chamada de aplicativo a uma ação "salvar arquivo"), apenas clica em uma coordenada específica de uma aplicação específica: nesse caso, é o
Reload
âncora da sua extensão em desenvolvimento (você deixa uma janela do Chrome aberta apenas para essa recarga).(Louco como o inferno, mas pode funcionar)
fonte
Aqui está uma função que você pode usar para monitorar arquivos em busca de alterações e recarregar se forem detectadas alterações. Ele funciona pesquisando-os via AJAX e recarregando-os através de window.location.reload (). Suponho que você não deve usar isso em um pacote de distribuição.
fonte
console.log
mensagens alteradas são exibidas).Talvez eu esteja um pouco atrasado para a festa, mas resolvi isso para mim criando https://chrome.google.com/webstore/detail/chrome-unpacked-extension/fddfkmklefkhanofhlohnkemejcbamln
Ele funciona recarregando a
chrome://extensions
página, sempre que osfile.change
eventos são recebidos via websockets.Um exemplo baseado em Gulp de como emitir
file.change
evento após alterações de arquivo em uma pasta de extensão pode ser encontrado aqui: https://github.com/robin-drexler/chrome-extension-auto-reload-watcherPor que recarregar a guia inteira em vez de apenas usar a API de gerenciamento de extensões para recarregar / reativar as extensões? Atualmente, desabilitar e habilitar extensões novamente faz com que qualquer janela de inspeção aberta (log do console etc.) seja fechada, o que eu achei muito irritante durante o desenvolvimento ativo.
fonte
Existe um plug-in de recarga automática se você estiver desenvolvendo usando o webpack: https://github.com/rubenspgcavalcante/webpack-chrome-extension-reloader
Também vem com uma ferramenta CLI, se você não deseja modificar o webpack.config.js:
Nota: é necessário um script em segundo plano (vazio), mesmo que você não precise, porque é aí que ele injeta o código de recarga.
fonte
Seus arquivos de conteúdo, como html e manifest, não podem ser alterados sem a instalação da extensão, mas acredito que os arquivos JavaScript sejam carregados dinamicamente até que a extensão seja compactada.
Eu sei disso por causa de um projeto atual que estou trabalhando na API de extensões do Chrome e parece carregar sempre que atualizo uma página.
fonte
Talvez uma resposta um pouco tarde, mas acho que o crxreload pode funcionar para você. É o resultado de tentar ter um fluxo de trabalho de recarregar e salvar durante o desenvolvimento.
fonte
Estou usando um atalho para recarregar. Não quero recarregar o tempo todo quando eu salvar um arquivo
Portanto, minha abordagem é leve e você pode deixar a função recarregar em
manifest.json
src / bg / background.js
Agora pressione Ctrl + M no navegador Chrome para recarregar
fonte
Use
npm init
para criar um package.json na raiz do diretório e, em seguida,npm install --save-dev gulp-open && npm install -g gulp
então crie um
gulpfile.js
que se parece com:
Isso funciona para mim, desenvolvendo com o CrossRider. Você pode mudar o caminho em que assiste os arquivos, assumindo também que você possui o npm e o nó instalados.
fonte
Isenção de responsabilidade: eu mesmo desenvolvi esta extensão.
Clerc - para cliente de recarga de extensão ao vivo do Chrome
A maioria dos desenvolvedores de páginas da Web usa um sistema de compilação com algum tipo de observador que cria automaticamente seus arquivos, reinicia o servidor e recarrega o site.
O desenvolvimento de extensões não precisa ser tão diferente. O Clerc traz essa mesma automação para os desenvolvedores do Chrome. Configure um sistema de compilação com um servidor LiveReload e o Clerc ouvirá eventos de recarregamento para atualizar sua extensão.
A única grande pegadinha são as alterações no manifest.json. Quaisquer pequenos erros de digitação no manifesto provavelmente causarão novas tentativas de recarga, e você ficará preso ao desinstalar / reinstalar sua extensão para que as alterações sejam carregadas novamente.
O Clerc encaminha a mensagem de recarregamento completa para o seu ramal após o recarregamento, para que você possa opcionalmente usar a mensagem fornecida para acionar outras etapas de atualização.
fonte
Os grandes caras do mozilla acabaram de lançar um novo https://github.com/mozilla/web-ext que você pode usar para iniciar
web-ext run --target chromium
fonte
Graças a @GmonC e @Arik e a algum tempo livre, consigo fazer com que isso funcione. Eu tive que mudar dois arquivos para fazer isso funcionar.
(1) Instale o LiveReload e a extensão do Chrome para esse aplicativo. Isso chamará algum script na alteração do arquivo.
(2) Aberto
<LiveReloadInstallDir>\Bundled\backend\res\livereload.js
(3) mude a linha
#509
parathis.window.location.href = "http://reload.extensions";
(4) Agora instale outra extensão
Extensions Reloader
que possui um manipulador de links útil que recarrega todas as extensões de desenvolvimento ao navegar para"http://reload.extensions"
(5) Agora mude a extensão
background.min.js
dessa maneiraif((d.installType=="development")&&(d.enabled==true)&&(d.name!="Extensions Reloader"))
substituir com
Abra o aplicativo LiveReload, oculte o botão Extension Reloader e ative a extensão LiveReload clicando no botão na barra de ferramentas. Agora você recarregará a página e as extensões em cada alteração de arquivo enquanto usa todos os outros brindes do LiveReload (atualização de css, atualização de imagem etc.)
A única coisa ruim é que você terá que repetir o procedimento de alteração de scripts em todas as atualizações de extensão. Para evitar atualizações, adicione a extensão como descompactada.
Quando tiver mais tempo para mexer com isso, provavelmente criarei extensões que eliminam a necessidade de ambas as extensões.
Até então, estou trabalhando na minha extensão Projext Axeman
fonte
Acabei de encontrar um grunhido newish projeto baseado em que fornece bootstrapping, andaimes, algumas faculdades de pré-processamento automatizado e recarga automática (nenhuma interação é necessária).
Inicialize sua extensão do Chrome no Websecurify
fonte
Se você possui um Mac, a maneira mais fácil é usar o Alfred App!
Basta obter o Alfred App com o Powerpack , adicionar o fluxo de trabalho fornecido no link abaixo e personalizar a tecla de atalho desejada (eu gosto de usar ⌘ + ⌥ + R). Isso é tudo.
Agora, sempre que você usar a tecla de atalho, o Google Chrome será recarregado, independentemente do aplicativo em que você está naquele momento.
Se você deseja usar outro navegador, abra o AppleScript nos fluxos de trabalho do Alfred Preferences e substitua "Google Chrome" por "Firefox", "Safari", ...
Também mostrarei aqui o conteúdo do script / usr / bin / osascript usado no arquivo ReloadChrome.alfredworkflow para que você possa ver o que está fazendo.
O arquivo do fluxo de trabalho é ReloadChrome.alfredworkflow .
fonte
Quero recarregar (atualizar) minhas extensões da noite para o dia, é isso que uso em background.js:
Atenciosamente, Peter
fonte
Eu bifurcada LiveJS para permitir a recarga ao vivo de Aplicativos empacotados. Basta incluir o arquivo no seu aplicativo e toda vez que você salvar um arquivo, o aplicativo será carregado automaticamente.
fonte
Conforme mencionado nos documentos: a seguinte linha de comando recarregará um aplicativo
então eu apenas criei um script de shell e chamei esse arquivo do gulp. Super simples:
execute os comandos watch necessários nos scripts e chame a tarefa de recarregar quando desejar. Limpo, simples.
fonte
É aqui que softwares como o AutoIt ou alternativas brilham. A chave é escrever um script que emula sua fase de teste atual. Acostume-se a usar pelo menos uma delas, pois muitas tecnologias não vêm com caminhos claros de fluxo de trabalho / teste.
Obviamente, você altera o código para atender às suas necessidades de teste / iteração. Certifique-se de que os cliques na guia sejam verdadeiros onde a tag âncora está no site chrome: // extensions. Você também pode usar em relação aos movimentos do mouse na janela e outras macros.
Eu adicionaria o script ao Vim de uma maneira semelhante a esta:
Isso significa que, quando estou no Vim, pressiono o botão acima de ENTER (geralmente responsável por: | e \), conhecido como botão líder, e o sigo com uma letra maiúscula 'A', que salva e inicia o script da fase de teste.
Certifique-se de preencher as seções {input ...} no script Vim / hotkey acima, de forma apropriada.
Muitos editores permitirão que você faça algo semelhante com as teclas de atalho.
Alternativas ao AutoIt podem ser encontradas aqui .
Para Windows: AutoHotkey
Para Linux: xdotool, xbindkeys
Para Mac: Automator
fonte
Eu desenvolvo principalmente no Firefox, onde
web-ext run
recarrega automaticamente a extensão após a alteração dos arquivos. Depois que estiver pronto, faço uma rodada final de testes no Chrome para garantir que não haja problemas que não apareceram no Firefox.No entanto, se você deseja desenvolver principalmente no Chrome e não deseja instalar extensões de terceiros, outra opção é criar um
test.html
arquivo na pasta da extensão e adicionar vários SSCCEs a ela. Esse arquivo usa uma<script>
tag normal para injetar o script de extensão.Você pode usá-lo em 95% dos testes e recarregar manualmente a extensão quando desejar testá-la em sites ativos.
Isso não reproduz de forma idêntica o ambiente em que uma extensão é executada, mas é bom o suficiente para muitas coisas simples.
fonte
O autor recomendou a próxima versão desse plug-in do webpack: https://github.com/rubenspgcavalcante/webpack-extension-reloader . Funciona muito bem para mim.
fonte
Sim, você pode fazer isso indiretamente! Aqui está a minha solução.
Em manifest.json
No inject.js
Seu script injetado pode injetar outro script em qualquer local.
Outro benefício dessa técnica é que você pode simplesmente ignorar a limitação do mundo isolado . consulte o ambiente de execução do script de conteúdo
fonte
BROWSER-SYNC
Usando o incrível Browser-Sync
Instalação no MacOS (veja a ajuda deles para instalar em outro sistema operacional)
Instale o NVM, para que você possa experimentar qualquer versão do Node
Como usar a sincronização do navegador para sites estáticos
Vamos ver dois exemplos:
A
--server
opção permite executar um servidor local em qualquer lugar do terminal e--files
especificar quais arquivos serão rastreados para alterações. Eu prefiro ser mais específico para os arquivos rastreados, portanto, no segundo exemplo, usoack
para listar extensões de arquivos específicas (é importante que esses arquivos não tenham nomes de arquivos com espaços) e tambémipconfig
para encontrar meu IP atual no MacOS.Como usar a sincronização do navegador para sites dinâmicos
Caso você esteja usando PHP, Rails, etc., você já possui um servidor em execução, mas ele não é atualizado automaticamente quando você faz alterações no seu código. Então você precisa usar o
--proxy
opção para permitir que a sincronização do navegador saiba onde está o host desse servidor.No exemplo acima, eu já tenho um aplicativo Rails em execução no meu navegador em
192.168.33.12:3000
. Realmente é executado em uma VM usando uma caixa Vagrant, mas eu poderia acessar a máquina virtual usando a porta 3000 nesse host. Eu gosto--no-notify
de parar a sincronização do navegador, enviando-me um alerta de notificação no navegador toda vez que altero meu código e--no-open
interromper o comportamento da sincronização do navegador que carrega imediatamente uma guia do navegador quando o servidor é iniciado.IMPORTANTE: Caso esteja usando o Rails, evite usar o Turbolinks no desenvolvimento, caso contrário você não poderá clicar nos seus links enquanto estiver usando a
--proxy
opção.Espero que seja útil para alguém. Eu tentei muitos truques para atualizar o navegador (até mesmo um post antigo que enviei sobre essa questão do StackOverflow usando o AlfredApp há algum tempo), mas esse é realmente o caminho a seguir; não há mais hacks, apenas flui.
CRÉDITO: Inicie um servidor da Web de recarga ao vivo local com um comando
fonte
Não pode ser feito diretamente. Desculpe.
Se você deseja vê-lo como um recurso, pode solicitá-lo em http://crbug.com/new
fonte