Я бы хотел, чтобы мое расширение chrome перезагружалось каждый раз, когда я сохраняю файл в папке расширения, без необходимости явно нажимать «перезагрузить» в chrome: // extensions /. Это возможно?
Редактировать: я знаю, что могу обновить интервал, с которым Chrome перезагружает расширения, что является промежуточным решением, но я бы предпочел либо заставить мой редактор (emacs или textmate) запускать при сохранении перезагрузку, либо просить Chrome отслеживать каталог для изменений.
javascript
google-chrome
google-chrome-extension
Андрей Федоров
источник
источник
Ответы:
Вы можете использовать « Расширение Reloader » для Chrome:
Обновление: по состоянию на 14 января 2015 года расширение является открытым исходным кодом и доступно на GitHub .
источник
http://reload.extensions
когда файл модифицируется. Теперь он работает точно так же, как livereload, но при этом каждый раз, когда я изменяю один из указанных файлов плагинов, открывается раздражающее окно Chrome: P. Спасибо!Обновление : я добавил страницу параметров, чтобы вам больше не приходилось вручную искать и редактировать идентификатор расширения. CRX и исходный код находятся по адресу: https://github.com/Rob--W/Chrome-Extension-Reloader
Обновление 2: добавлен ярлык (см. Мой репозиторий на Github).
Оригинальный код, который включает в себя основные функции , показан ниже .
Создайте расширение и используйте метод действия браузера вместе с
chrome.extension.management
API для перезагрузки распакованного расширения.Код ниже добавляет кнопку в Chrome, которая перезагрузит расширение при нажатии.
manifest.json
bg.js
icon48.png
Выберите любой красивый значок 48x48, например:источник
chrome.i18n.getMessage("@@extension_id")
. Это, однако, возвращает extensionID текущего расширения, что бесполезно, поскольку расширение не может перезагрузить себя с помощьюmanagement
API (после отключения у него нет возможности снова включить расширение).в любой функции или событии
перезагрузит ваше расширение ( документы ). Вам также нужно изменить файл manifest.json , добавив:
источник
chrome.runtime.reload()
, что на самом деле происходит? обновить несколько страниц / вкладок?chrome.runtime.reload()
из фонового сценарияЯ сделал простой встраиваемый скрипт, выполняющий горячую перезагрузку:
https://github.com/xpl/crx-hotreload
Он отслеживает изменения файлов в каталоге расширения. Когда изменение обнаружено, оно перезагружает расширение и обновляет активную вкладку (чтобы повторно запустить обновленные сценарии содержимого).
источник
npm install crx-hotreload
в каталог расширения, а затем ссылаться на скрипт, как"scripts": ["./node_modules/crx-hotreload/hot-reload.js"]
? Поправь меня, если я ошибаюсь.import reloader from 'hot-reload'
то в скрипте reloader.check ()--watch
, потому что вы можете просто поместить его в папку сборки, чтобы он обновлялся только после завершения процесса сборки. Нет сложных командных плагинов Webpack после сборки.Другим решением было бы создать собственный скрипт livereload (extension-reload.js):
Этот скрипт подключается к серверу livereload с помощью веб-сокетов. Затем он выдаст вызов chrome.runtime.reload () после перезагрузки сообщения из livereload. Следующим шагом будет добавление этого сценария для запуска в качестве фонового сценария в ваш manifest.json и вуаля!
Примечание: это не мое решение. Я просто публикую это. Я нашел его в сгенерированном коде генератора расширений Chrome (отличный инструмент!). Я публикую это здесь, потому что это может помочь.
источник
У расширений Chrome есть система разрешений , которая не позволяет (некоторые люди в SO сталкивались с той же проблемой, что и вы ), поэтому запрос их «добавить эту функцию» не будет работать в IMO. Есть сообщение от Chromium Extensions Google Groups с предложенным решением (теорией), использующим
chrome.extension.getViews()
, но не гарантирована работать.Если бы можно было добавить к
manifest.json
некоторым внутренним страницам Chrome, напримерchrome://extensions/
, можно было бы создать плагин, который взаимодействовал бы сReload
якорем, и, используя внешнюю программу, такую как XRefresh (плагин Firefox - есть версия Chrome, использующая Ruby и WebSocket). ), вы бы достигли именно то, что вам нужно:Это невозможно сделать, но я думаю, что вы можете использовать эту же концепцию по-другому.
Вместо этого вы можете попытаться найти сторонние решения, которые, увидев изменения в файле (я не знаю ни emacs, ни Textmate, но в Emacs можно было бы связать вызов приложения внутри действия «сохранить файл»), просто щелкает в определенной координате конкретного приложения: в этом случае это
Reload
привязка вашего расширения в разработке (вы оставляете окна Chrome открытыми только для этой перезагрузки).(Сумасшедший, но это может сработать)
источник
Вот функция, которую вы можете использовать для просмотра файлов на предмет изменений и перезагрузки в случае обнаружения изменений. Это работает путем опроса их через AJAX и перезагрузки через window.location.reload (). Я полагаю, вы не должны использовать это в дистрибутиве.
источник
console.log
сообщения действительно показывают вверх).Может быть, я немного опоздал на вечеринку, но я решил это для меня, создав https://chrome.google.com/webstore/detail/chrome-unpacked-extension/fddfkmklefkhanofhlohnkemejcbamln
Он работает путем перезагрузки
chrome://extensions
страницы всякий раз, когдаfile.change
события поступают через веб-сокеты.На основе Gulp пример того, как генерировать
file.change
событие при изменении файла в папке расширения, можно найти здесь: https://github.com/robin-drexler/chrome-extension-auto-reload-watcherЗачем перезагружать всю вкладку, а не просто использовать API управления расширениями для перезагрузки / повторного включения расширений? В настоящее время отключение и включение расширений снова приводит к закрытию любого открытого окна проверки (журнал консоли и т. Д.), Что, по моему мнению, слишком раздражает во время активной разработки.
источник
Существует плагин автоматической перезагрузки, если вы разрабатываете с помощью веб-пакета: https://github.com/rubenspgcavalcante/webpack-chrome-extension-reloader
Также поставляется с инструментом CLI, если вы не хотите изменять webpack.config.js:
Примечание: (пустой) фоновый скрипт необходим, даже если он вам не нужен, потому что именно здесь он вводит код перезагрузки.
источник
Ваши файлы содержимого, такие как html и файлы манифеста, не могут быть изменены без установки расширения, но я уверен, что файлы JavaScript загружаются динамически, пока расширение не будет упаковано.
Я знаю это из-за текущего проекта, над которым я работаю через Chrome Extensions API, и, кажется, загружается каждый раз, когда я обновляю страницу.
источник
Возможно, немного запоздалый ответ, но я думаю, что crxreload может сработать для вас. Это мой результат попыток создать рабочий процесс перезагрузки при сохранении во время разработки.
источник
Я использую ярлык для перезагрузки. Я не хочу перезагружать все время, когда я сохраняю файл
Так что мой подход облегчен, и вы можете оставить функцию перезагрузки в
manifest.json
SRC / BG / background.js
Теперь нажмите Ctrl + M в браузере Chrome, чтобы перезагрузить
источник
Используйте
npm init
для создания package.json в корневом каталоге, затемnpm install --save-dev gulp-open && npm install -g gulp
затем создать
gulpfile.js
который выглядит как:
Это работает для меня, разрабатывая с CrossRider, вы можете посмотреть, как изменить путь, по которому вы смотрите файлы, также при условии, что у вас установлены npm и узел.
источник
Отказ от ответственности: я разработал это расширение самостоятельно.
Clerc - для клиента перезагрузки расширений Chrome Live
Большинство разработчиков веб-страниц используют систему сборки со своего рода наблюдателем, который автоматически создает свои файлы, перезагружает сервер и перезагружает веб-сайт.
Разработка расширений не должна быть такой разной. Clerc предлагает эту же автоматизацию разработчикам Chrome. Настройте систему сборки с сервером LiveReload, и Clerc будет прослушивать события перезагрузки, чтобы обновить ваше расширение.
Единственная большая проблема - это изменения в manifest.json. Любые крошечные опечатки в манифесте, вероятно, вызовут дальнейшие попытки перезагрузки, и вы застрянете при удалении / переустановке расширения, чтобы ваши изменения снова загружались.
Clerc перенаправляет сообщение полной перезагрузки на ваш добавочный номер после его перезагрузки, поэтому вы можете при желании использовать предоставленное сообщение для запуска дальнейших шагов обновления.
источник
Великие ребята из Mozilla только что выпустили новый https://github.com/mozilla/web-ext, который вы можете использовать для запуска
web-ext run --target chromium
источник
Благодаря @GmonC и @Arik и некоторому свободному времени мне удалось заставить это работать. Мне пришлось изменить два файла, чтобы сделать эту работу.
(1) Установите LiveReload и Chrome Extension для этого приложения. Это вызовет некоторый скрипт при изменении файла.
(2) Открыть
<LiveReloadInstallDir>\Bundled\backend\res\livereload.js
(3) изменить строку
#509
наthis.window.location.href = "http://reload.extensions";
(4) Теперь установите другое расширение,
Extensions Reloader
которое имеет полезный обработчик ссылок, который перезагружает все расширения разработки при переходе к"http://reload.extensions"
(5) Теперь измените это расширение
background.min.js
таким образомif((d.installType=="development")&&(d.enabled==true)&&(d.name!="Extensions Reloader"))
заменить
Откройте приложение LiveReload, скройте кнопку Extension Reloader и активируйте расширение LiveReload, нажав кнопку на панели инструментов, теперь вы будете перезагружать страницу и расширения при каждом изменении файла, используя все другие полезности из LiveReload (перезагрузка css, перезагрузка изображения и т. Д.)
Единственная плохая вещь в этом - то, что вам придется повторять процедуру изменения скриптов при каждом обновлении расширения. Чтобы избежать обновлений, добавьте расширение как распакованное.
Когда у меня будет больше времени возиться с этим, я, вероятно, создам расширение, которое устраняет необходимость в обоих этих расширениях.
До тех пор я работаю над своим расширением Projext Axeman
источник
Только что нашел новое ворчание проект, основанный на который обеспечивает загрузку, леса, некоторую автоматизированную предварительную обработку, а также автоматическую перезагрузку (взаимодействие не требуется).
Загрузите расширение Chrome от Websecurify
источник
Если у вас Mac, то самый простой способ - это приложение Alfred!
Просто получите Alfred App с Powerpack , затем добавьте рабочий процесс, указанный в ссылке ниже, и настройте нужную горячую клавишу (мне нравится использовать ⌘ + ⌥ + R). Вот и все.
Теперь каждый раз, когда вы используете горячую клавишу, Google Chrome будет перезагружаться независимо от того, какое приложение вы используете в данный момент.
Если вы хотите использовать другой браузер, откройте AppleScript внутри рабочих процессов Alfred Preferences и замените «Google Chrome» на «Firefox», «Safari», ...
Я также покажу здесь содержимое скрипта / usr / bin / osascript, используемого в файле ReloadChrome.alfredworkflow, чтобы вы могли видеть, что он делает.
Файл рабочего процесса - ReloadChrome.alfredworkflow .
источник
Я хочу перезагрузить (обновить) свои расширения в одночасье, вот что я использую в background.js:
С уважением, Питер
источник
Я разбудил LiveJS, чтобы разрешить прямую перезагрузку упакованных приложений. Просто включите файл в свое приложение, и каждый раз, когда вы сохраняете файл, приложение автоматически перезагружается.
источник
Как упомянуто в документации: следующая командная строка перезагрузит приложение
поэтому я просто создал сценарий оболочки и вызвал этот файл из gulp. Супер просто:
Запустите необходимые команды наблюдения для сценариев и при необходимости вызовите задачу перезагрузки. Чисто, просто.
источник
Это где программное обеспечение, такое как AutoIt или альтернативы сияют. Ключ в написании сценария, который имитирует ваш текущий этап тестирования. Привыкайте использовать хотя бы одну из них, так как многие технологии не имеют четких рабочих процессов / путей тестирования.
Очевидно, вы меняете код в соответствии с вашими потребностями тестирования / повторения. Удостоверьтесь, что щелчки вкладок соответствуют положению тега привязки на сайте расширений chrome: //. Вы также можете использовать относительно движений оконной мыши и других подобных макросов.
Я хотел бы добавить сценарий в Vim таким образом:
Это означает, что когда я нахожусь в Vim, я нажимаю кнопку над ENTER (обычно отвечающую за: | и \), известную как кнопка лидера, и следую за ней с заглавной буквой «A», и это сохраняет и начинает мой сценарий фазы тестирования.
Пожалуйста, не забудьте правильно заполнить разделы {input ...} в приведенном выше скрипте Vim / hotkey.
Многие редакторы позволят вам сделать нечто подобное с помощью горячих клавиш.
Альтернативы AutoIt можно найти здесь .
Для Windows: AutoHotkey
Для Linux: xdotool, xbindkeys
Для Mac: Automator
источник
Я в основном развиваюсь в Firefox, где
web-ext run
автоматически перезагружает расширение после изменения файлов. Затем, когда все будет готово, я проведу последний этап тестирования в Chrome, чтобы убедиться, что в Firefox нет проблем.Если вы хотите разрабатывать в основном в Chrome, и не хотите устанавливать какие-либо сторонние расширения, тогда другой вариант - создать
test.html
файл в папке расширения и добавить к нему несколько SSCCE . Этот файл затем использует нормальный<script>
тег для внедрения сценария расширения.Вы можете использовать это для 95% тестирования, а затем вручную перезагрузить расширение, если хотите протестировать его на живых сайтах.
Это не идентично воспроизводит среду, в которой работает расширение, но достаточно для многих простых вещей.
источник
Автор рекомендовал следующую версию этого плагина для веб-пакетов: https://github.com/rubenspgcavalcante/webpack-extension-reloader . Это работает очень хорошо для меня.
источник
Да, вы можете сделать это косвенно! Вот мое решение.
В manifest.json
В inject.js
Ваш внедренный скрипт может внедрить другой скрипт из любого места.
Еще одним преимуществом этой техники является то, что вы можете просто игнорировать ограничения изолированного мира . увидеть среду выполнения скриптов контента
источник
БРАУЗЕР-SYNC
Использование удивительной синхронизации браузера
Установка на MacOS (см. Их помощь для установки на другие ОС)
Установите NVM, чтобы вы могли попробовать любую версию Node
Как использовать браузер-синхронизацию для статических сайтов
Давайте посмотрим на два примера:
--server
Опция позволяет запускать локальный сервер где - нибудь вы в вашем терминале и--files
позволяют определить , какие файлы будут отслеживаться изменения. Я предпочитаю быть более точным для отслеживаемых файлов, поэтому во втором примере я используюack
для перечисления конкретных расширений файлов (важно, чтобы у этих файлов не было имен файлов с пробелами), а также использую ихipconfig
для поиска моего текущего IP-адреса в MacOS.Как использовать браузер-синхронизацию для динамических сайтов
Если вы используете PHP, Rails и т. Д., У вас уже есть работающий сервер, но он не обновляется автоматически при внесении изменений в код. Так что вам нужно использовать
--proxy
переключатель, чтобы синхронизировать браузер, где находится хост для этого сервера.В приведенном выше примере у меня уже есть приложение Rails, запущенное в моем браузере на
192.168.33.12:3000
. Он действительно работает на виртуальной машине с использованием Vagrant, но я мог получить доступ к виртуальной машине через порт 3000 на этом хосте. Мне нравится--no-notify
останавливать синхронизацию браузера, отправляя мне уведомление о предупреждении в браузере каждый раз, когда я меняю код, и--no-open
останавливать поведение синхронизации браузера, которое сразу же загружает вкладку браузера при запуске сервера.ВАЖНЫЙ: всякий случай, если вы используете Rails, избегайте использования Turbolinks при разработке, иначе вы не сможете нажимать на ссылки при использовании этой
--proxy
опции.Надеюсь, это будет полезно для кого-то. Я перепробовал много хитростей, чтобы обновить браузер (даже старый пост, который я отправил по этому вопросу StackOverflow, используя AlfredApp некоторое время назад), но это действительно верный путь; нет больше хаков, это просто течет.
КРЕДИТ: Запустите локальный веб-сервер перезагрузки с помощью одной команды
источник
Это не может быть сделано напрямую. Сожалею.
Если вы хотите увидеть его как функцию, вы можете запросить его на http://crbug.com/new
источник