Je voudrais que mon extension chrome se recharge à chaque fois que j'enregistre un fichier dans le dossier d'extension, sans avoir à cliquer explicitement sur "recharger" dans chrome: // extensions /. Est-ce possible?
Modifier: je sais que je peux mettre à jour l'intervalle auquel Chrome recharge les extensions, ce qui est une solution à mi-chemin, mais je préfère faire déclencher mon éditeur (emacs ou textmate) lors de l'enregistrement d'une recharge ou demander à Chrome de surveiller le répertoire des modifications.
javascript
google-chrome
google-chrome-extension
Andrey Fedorov
la source
la source
Réponses:
Vous pouvez utiliser " Extensions Reloader " pour Chrome:
Mise à jour: Depuis le 14 janvier 2015, l'extension est open source et disponible sur GitHub .
la source
http://reload.extensions
lorsqu'un fichier est modifié. Il agit maintenant exactement comme livereload, mais avec une fenêtre chromée ennuyante qui s'ouvre à chaque fois que je modifie l'un des fichiers de plugin spécifiés: P. Merci!Mise à jour : j'ai ajouté une page d'options, afin que vous n'ayez plus à rechercher et modifier manuellement l'ID de l'extension. CRX et code source sont à: https://github.com/Rob--W/Chrome-Extension-Reloader
Update 2: Ajout d'un raccourci (voir mon référentiel sur Github).
Le code d'origine, qui inclut les fonctionnalités de base, est illustré ci-dessous .
Créez une extension et utilisez la méthode d' action du navigateur conjointement avec l'
chrome.extension.management
API pour recharger votre extension décompressée.Le code ci-dessous ajoute un bouton à Chrome, qui rechargera une extension au clic.
manifest.json
bg.js
icon48.png
: Choisissez une jolie icône 48x48, par exemple:la source
chrome.i18n.getMessage("@@extension_id")
. Cela renvoie cependant l'extensionID de l' extension actuelle , ce qui n'est pas utile car une extension ne peut pas se recharger à l'aide de l'management
API (après la désactivation, elle n'a pas la possibilité de réactiver l'extension).dans n'importe quelle fonction ou événement
rechargera votre extension ( docs ). Vous devez également modifier le fichier manifest.json , en ajoutant:
la source
chrome.runtime.reload()
, que se passe-t-il réellement? Est-ce que plusieurs pages / onglets sont actualisés?chrome.runtime.reload()
partir du script d'arrière-planJ'ai créé un script intégrable simple faisant un rechargement à chaud:
https://github.com/xpl/crx-hotreload
Il surveille les changements de fichiers dans le répertoire d'une extension. Lorsqu'un changement est détecté, il recharge l'extension et actualise l'onglet actif (pour relancer les scripts de contenu mis à jour).
la source
npm install crx-hotreload
dans le répertoire de l'extension, puis référencez le script comme"scripts": ["./node_modules/crx-hotreload/hot-reload.js"]
? Corrigez-moi si je me trompe.import reloader from 'hot-reload'
dans le script reloader.check ()--watch
également, car vous pouvez simplement le placer dans votre dossier de génération afin qu'il ne soit mis à jour qu'une fois le processus de génération terminé. Aucun plug-in de commande Webpack post-build compliqué.Une autre solution serait de créer un script de chargement de foie personnalisé (extension-reload.js):
Ce script se connecte au serveur livereload à l'aide de websockets. Ensuite, il émettra un appel chrome.runtime.reload () lors du rechargement du message de livereload. La prochaine étape serait d'ajouter ce script à exécuter en tant que script d'arrière-plan dans votre manifest.json, et le tour est joué!
Remarque: ce n'est pas ma solution. Je le poste juste. Je l'ai trouvé dans le code généré du générateur d'extension Chrome (excellent outil!). Je poste ceci ici car cela pourrait aider.
la source
Les extensions Chrome ont un système d'autorisation qu'il ne permettrait pas (certaines personnes en SO ont eu le même problème que vous ), donc leur demander d'ajouter cette fonctionnalité ne fonctionnera pas IMO. Il y a un e-mail de Chromium Extensions Google Groups avec une solution proposée (théorie) utilisant
chrome.extension.getViews()
, mais il n'est pas garanti de fonctionner non plus.S'il était possible d'ajouter aux
manifest.json
quelques pages internes de Chrome commechrome://extensions/
, il serait possible de créer un plugin qui interagirait avec l'Reload
ancre, et, en utilisant un programme externe comme XRefresh (un plugin Firefox - il existe une version Chrome utilisant Ruby et WebSocket ), vous obtiendriez exactement ce dont vous avez besoin:Ce n'est pas possible, mais je pense que vous pouvez utiliser ce même concept d'une manière différente.
Vous pouvez essayer de trouver des solutions tierces au lieu de cela, après avoir vu des modifications dans un fichier (je ne connais ni emacs ni Textmate, mais dans Emacs, il serait possible de lier un appel d'application dans une action "enregistrer le fichier"), juste clique dans une coordonnée spécifique d'une application spécifique: dans ce cas, c'est l'
Reload
ancre de votre extension en développement (vous laissez une fenêtre Chrome ouverte juste pour ce rechargement).(Fou comme l'enfer mais ça peut marcher)
la source
Voici une fonction que vous pouvez utiliser pour surveiller les fichiers pour les modifications et recharger si des modifications sont détectées. Il fonctionne en les interrogeant via AJAX et en les rechargeant via window.location.reload (). Je suppose que vous ne devriez pas utiliser cela dans un package de distribution.
la source
console.log
messages modifiés s'affichent).Je suis peut-être un peu en retard à la fête, mais je l'ai résolu pour moi en créant https://chrome.google.com/webstore/detail/chrome-unpacked-extension/fddfkmklefkhanofhlohnkemejcbamln
Il fonctionne en rechargeant la
chrome://extensions
page, chaque fois que desfile.change
événements arrivent via des sockets Web.Un exemple basé sur Gulp sur la façon d'émettre un
file.change
événement lors de modifications de fichier dans un dossier d'extension peut être trouvé ici: https://github.com/robin-drexler/chrome-extension-auto-reload-watcherPourquoi recharger tout l'onglet au lieu d'utiliser simplement l'API de gestion des extensions pour recharger / réactiver les extensions? Actuellement, la désactivation et l'activation des extensions entraînent la fermeture de toute fenêtre d'inspection ouverte (journal de la console, etc.), ce que j'ai trouvé trop ennuyeux pendant le développement actif.
la source
Il y a un plugin de rechargement automatique si vous développez en utilisant webpack: https://github.com/rubenspgcavalcante/webpack-chrome-extension-reloader
Fournit également un outil CLI si vous ne souhaitez pas modifier webpack.config.js:
Remarque: un script d'arrière-plan (vide) est requis même si vous n'en avez pas besoin car c'est là qu'il injecte du code de rechargement.
la source
Vos fichiers de contenu tels que html et les fichiers manifestes ne sont pas modifiables sans l'installation de l'extension, mais je crois que les fichiers JavaScript sont chargés dynamiquement jusqu'à ce que l'extension soit compressée.
Je le sais en raison d'un projet en cours sur lequel je travaille via l'API Chrome Extensions, et semble se charger à chaque fois que je rafraîchis une page.
la source
Peut-être une réponse un peu tardive mais je pense que crxreload pourrait fonctionner pour vous. C'est mon résultat d'avoir essayé d'avoir un flux de travail de rechargement lors de la création.
la source
J'utilise un raccourci pour recharger. Je ne veux pas recharger tout le temps quand j'enregistre un fichier
Mon approche est donc légère, et vous pouvez laisser la fonction de rechargement dans
manifest.json
src / bg / background.js
Maintenant, appuyez sur Ctrl + M dans le navigateur Chrome pour recharger
la source
Utilisez
npm init
pour créer un package.json dans le répertoire racine, puisnpm install --save-dev gulp-open && npm install -g gulp
puis créez un
gulpfile.js
qui ressemble à:
Cela fonctionne pour moi en développant avec CrossRider, vous pouvez regarder pour changer le chemin dans lequel vous regardez les fichiers, en supposant également que npm et le nœud soient installés.
la source
Avertissement: j'ai développé cette extension moi-même.
Clerc - pour Chrome Live Extension Reloading Client
La plupart des développeurs de pages Web utilisent un système de construction avec une sorte de surveillant qui crée automatiquement leurs fichiers et redémarre leur serveur et recharge le site Web.
Le développement d'extensions ne devrait pas être si différent. Clerc apporte cette même automatisation aux développeurs Chrome. Configurez un système de build avec un serveur LiveReload et Clerc écoutera les événements de rechargement pour actualiser votre extension.
Le seul gros problème est la modification du manifeste.json. Toute petite faute de frappe dans le manifeste entraînera probablement l'échec de nouvelles tentatives de rechargement, et vous serez bloqué en désinstallant / réinstallant votre extension pour que vos modifications se chargent à nouveau.
Clerc transmet le message de rechargement complet à votre extension après son rechargement, vous pouvez donc éventuellement utiliser le message fourni pour déclencher d'autres étapes de rafraîchissement.
la source
Les grands gars de mozilla viennent de publier un nouveau https://github.com/mozilla/web-ext que vous pouvez utiliser pour lancer
web-ext run --target chromium
la source
Grâce à @GmonC et @Arik et à du temps libre, je gère pour que cela fonctionne. J'ai dû changer deux fichiers pour que cela fonctionne.
(1) Installez LiveReload et l'extension Chrome pour cette application. Cela appellera un script lors du changement de fichier.
(2) Ouvert
<LiveReloadInstallDir>\Bundled\backend\res\livereload.js
(3) changer la ligne
#509
enthis.window.location.href = "http://reload.extensions";
(4) Maintenant, installez une autre extension
Extensions Reloader
qui a un gestionnaire de liens utile qui recharge toutes les extensions de développement lors de la navigation vers"http://reload.extensions"
(5) Maintenant, changez cette extension de
background.min.js
cette façonif((d.installType=="development")&&(d.enabled==true)&&(d.name!="Extensions Reloader"))
remplacer par
Ouvrez l'application LiveReload, cachez le bouton Extension Reloader et activez l'extension LiveReload en cliquant sur le bouton dans la barre d'outils, vous rechargerez maintenant la page et les extensions à chaque changement de fichier tout en utilisant tous les autres goodies de LiveReload (rechargement css, rechargement d'image, etc.)
La seule mauvaise chose à ce sujet est que vous devrez répéter la procédure de changement de scripts à chaque mise à jour d'extension. Pour éviter les mises à jour, ajoutez l'extension comme décompressée.
Lorsque j'aurai plus de temps pour jouer avec cela, je créerai probablement une extension qui élimine le besoin de ces deux extensions.
Jusque-là, je travaille sur mon extension Projext Axeman
la source
Je viens de trouver un nouveau grognement projet basé sur le qui fournit le bootstrap, l'échafaudage, une faculté de pré-traitement automatisé, ainsi que le rechargement automatique (aucune interaction nécessaire).
Démarrez votre extension Chrome à partir de Websecurify
la source
Si vous avez un Mac, le plus simple est avec Alfred App!
Obtenez simplement Alfred App avec Powerpack , puis ajoutez le flux de travail fourni dans le lien ci-dessous et personnalisez le raccourci clavier que vous souhaitez (j'aime utiliser ⌘ + ⌥ + R). C'est tout.
Désormais, chaque fois que vous utilisez le raccourci clavier, Google Chrome se recharge, quelle que soit l'application que vous utilisez à ce moment-là.
Si vous souhaitez utiliser un autre navigateur, ouvrez l'AppleScript dans Alfred Preferences Workflows et remplacez "Google Chrome" par "Firefox", "Safari", ...
Je vais également montrer ici le contenu du script / usr / bin / osascript utilisé dans le fichier ReloadChrome.alfredworkflow afin que vous puissiez voir ce qu'il fait.
Le fichier de workflow est ReloadChrome.alfredworkflow .
la source
Je veux recharger (mettre à jour) mes extensions du jour au lendemain, c'est ce que j'utilise en background.js:
Cordialement, Peter
la source
J'ai créé LiveJS pour permettre le rechargement en direct des applications packagées. Il vous suffit d'inclure le fichier dans votre application et chaque fois que vous enregistrez un fichier, l'application se recharge automatiquement.
la source
Comme mentionné dans la documentation: la ligne de commande suivante rechargera une application
donc je viens de créer un script shell et j'ai appelé ce fichier depuis gulp. Super simple:
exécutez vos commandes de surveillance nécessaires sur les scripts et appelez la tâche de rechargement lorsque vous le souhaitez. Propre, simple.
la source
C'est là que les logiciels comme AutoIt ou les alternatives brillent. La clé est d'écrire un script qui émule votre phase de test actuelle. Habituez-vous à utiliser au moins l'une d'entre elles, car de nombreuses technologies ne sont pas accompagnées de flux de travail / chemins de test clairs.
De toute évidence, vous modifiez le code en fonction de vos besoins de test / itération. Assurez-vous que les clics sur les onglets correspondent à l'emplacement de la balise d'ancrage dans le site des extensions chrome: //. Vous pouvez également utiliser les mouvements de la souris relatifs à la fenêtre et d'autres macros de ce type.
J'ajouterais le script à Vim d'une manière similaire à ceci:
Cela signifie que lorsque je suis dans Vim, j'appuie sur le bouton ci-dessus ENTRÉE (généralement responsable de: | et \) connu sous le nom de bouton leader et le suit avec un «A» majuscule et il enregistre et commence mon script de phase de test.
Veuillez vous assurer de remplir correctement les sections {input ...} du script Vim / raccourci clavier ci-dessus.
De nombreux éditeurs vous permettront de faire quelque chose de similaire avec les raccourcis clavier.
Des alternatives à AutoIt peuvent être trouvées ici .
Pour Windows: AutoHotkey
Pour Linux: xdotool, xbindkeys
Pour Mac: Automator
la source
Je développe principalement dans Firefox, où
web-ext run
recharge automatiquement l'extension après le changement de fichiers. Ensuite, une fois que c'est prêt, je fais une dernière série de tests dans Chrome pour m'assurer qu'il n'y a pas de problèmes qui n'apparaissent pas dans Firefox.Si vous souhaitez développer principalement dans Chrome et que vous ne souhaitez pas installer d'extensions tierces, une autre option consiste à créer un
test.html
fichier dans le dossier de l'extension et à y ajouter un tas de SSCCE . Ce fichier utilise ensuite un normal<script>
balise pour injecter le script d'extension.Vous pouvez l'utiliser pour 95% des tests, puis recharger manuellement l'extension lorsque vous souhaitez la tester sur des sites en direct.
Cela ne reproduit pas à l'identique l'environnement dans lequel une extension s'exécute, mais c'est assez bon pour de nombreuses choses simples.
la source
L'auteur a recommandé la prochaine version de ce plugin webpack: https://github.com/rubenspgcavalcante/webpack-extension-reloader . Cela fonctionne très bien pour moi.
la source
Oui, vous pouvez le faire indirectement! Voici ma solution.
Dans manifest.json
In inject.js
Votre script injecté peut injecter un autre script depuis n'importe quel emplacement.
Un autre avantage de cette technique est que vous pouvez simplement ignorer la limitation du monde isolé . voir l' environnement d'exécution du script de contenu
la source
BROWSER-SYNC
Utilisation de l'incroyable Browser-Sync
Instalation sur MacOS (voir leur aide à installer sur d'autres OS)
Installez NVM pour pouvoir essayer n'importe quelle version de Node
Comment utiliser la synchronisation du navigateur pour les sites statiques
Voyons deux exemples:
L'
--server
option vous permet d'exécuter un serveur local où que vous soyez dans votre terminal et--files
vous permet de spécifier quels fichiers seront suivis pour les modifications. Je préfère être plus spécifique pour les fichiers suivis, donc dans le deuxième exemple, j'utiliseack
pour répertorier les extensions de fichiers spécifiques (il est important que ces fichiers n'aient pas de noms de fichiers avec des espaces) et j'utilise égalementipconfig
pour trouver mon IP actuelle sur MacOS.Comment utiliser la synchronisation du navigateur pour les sites dynamiques
Dans le cas où vous utilisez PHP, Rails, etc., vous avez déjà un serveur en cours d'exécution, mais il ne s'actualise pas automatiquement lorsque vous apportez des modifications à votre code. Vous devez donc utiliser le
--proxy
commutateur pour permettre à la synchronisation du navigateur de savoir où se trouve l'hôte de ce serveur.Dans l'exemple ci-dessus, j'ai déjà une application Rails en cours d'exécution sur mon navigateur
192.168.33.12:3000
. Il fonctionne vraiment sur une machine virtuelle à l'aide d'une boîte Vagrant, mais je pouvais accéder à la machine virtuelle en utilisant le port 3000 sur cet hôte. J'aime--no-notify
arrêter la synchronisation du navigateur en m'envoyant une alerte de notification sur le navigateur chaque fois que je change de code et--no-open
arrêter le comportement de synchronisation du navigateur qui charge immédiatement un onglet du navigateur au démarrage du serveur.IMPORTANT: Juste au cas où vous utilisez Rails, évitez d'utiliser Turbolinks sur le développement, sinon vous ne pourrez pas cliquer sur vos liens lorsque vous utilisez le
--proxy
option.J'espère que cela serait utile à quelqu'un. J'ai essayé de nombreuses astuces pour actualiser le navigateur (même un ancien post que j'ai soumis sur cette question StackOverflow en utilisant AlfredApp il y a longtemps), mais c'est vraiment la voie à suivre; plus de hacks, ça coule juste.
CRÉDIT: démarrer un serveur Web de rechargement en direct local avec une seule commande
la source
Cela ne peut pas être fait directement. Désolé.
Si vous souhaitez le voir comme une fonctionnalité, vous pouvez le demander sur http://crbug.com/new
la source