Самый быстрый способ отладки надстроек Firefox во время разработки

Отладка надстройки Firefox — медленный процесс: (1) отредактируйте исходный код в редакторе JS (2) упакуйте в XPI с помощью скрипта сборки (3) перетащите в Firefox для установки (4) перезапустите Firefox (5) откройте отладчик JavaScript

Можем ли мы ускорить процесс? Например, установить его в Firefox без перезагрузки или настроить скрипт сборки, чтобы установить его и в Firefox?


person Robin Rodricks    schedule 03.07.2009    source источник
comment
Этот вопрос все еще время от времени привлекает внимание — обратите внимание, что ответы здесь довольно старые и не учитывают поддержку загружаемые расширения, процесс разработки которых немного отличается.   -  person Stobor    schedule 05.02.2013
comment
^ Я бы скорее сказал, обязательно следите за датами ответа, который вы сейчас просматриваете.   -  person Nirav Zaveri    schedule 27.06.2014
comment
3 варианта: использовать FF 31, использовать аддон автоустановщика, встроить его в код. Пожалуйста, добавьте/отредактируйте ответ ниже   -  person user3526    schedule 12.07.2014


Ответы (7)


Вам нужно будет найти свою папку профиля. Как только вы найдете его, перейдите в папку с названием «расширения», а затем найдите папку надстройки, над которой вы работаете. Замените эту папку файлом с таким же именем (минус .xpi, если это часть имени), а внутри файла поместите полный путь к исходному каталогу надстройки.

В Linux и Mac это будет выглядеть так:

/full/path/to/yourExtension/

И в Windows:

C:\full\path\to\yourExtension\

Помните косую черту в конце и остерегайтесь лишних пробелов.

Если вы не используете jar-файлы внутри надстройки, вам больше не придется перестраиваться (здесь это рассматривается более подробно).

Кроме того, вам нужно установить для параметра nglayout.debug.disable_xul_cache значение true. Для редактирования файлов xul или js вам просто нужно открыть новое окно, чтобы увидеть ваши изменения, вместо перезапуска приложения. Здесь есть другие настройки, которые также могут оказаться полезными.

Дополнительные советы:

  • Запуск firefox с определенным профилем (dev), в то время как другой профиль firefox открыт и уже включен отладчик:

    "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -no-remote -P dev -jsconsole

  • Проверьте перезапуск надстройки (экономит время ).

person sdwilsh    schedule 03.07.2009
comment
О, ничего себе, я понятия не имел о disable_xul_cache. Это сделало мой день. - person Wayne; 03.03.2011
comment
Это работает при открытии нового окна. Есть ли способ заставить его работать с открытием новой вкладки? - person xralf; 29.11.2011
comment
@xralf: в основном нет. Код в оверлее browser.xul загружается в каждом окне; чтобы загрузить обновленный код в существующее окно, Firefox должен был бы сначала выгрузить ваш код, что невозможно ^ W нерешенная проблема. С другой стороны, если вы изменяете код, который выполняется в документе, загруженном на вкладку, он будет перезагружен вместе с вкладкой, как и обычные веб-страницы. Вы можете заглянуть в Addon SDK, в котором есть многообещающая инфраструктура для создания незагружаемых расширений, или, если вы просто пишете сценарий содержимого, даже что-то вроде Greasemonkey будет хорошим началом. - person Nickolay; 29.11.2011
comment
@Nickolay Хорошо, я обнаружил, что это хорошее ускорение разработки, только потому, что мне не нужно перестраивать. - person xralf; 29.11.2011

я использую Netbeans с плагином Foxbeans для разработки надстроек, вот вам и нажмите «кнопку запуска», и firefox запустится с установленным дополнением (в тестовом профиле). возможно, вам стоит попробовать это!

person bizzy    schedule 04.07.2009

Вам нужны шаги «редактировать источник» и «перезапустить firefox»; они не могут быть удалены из процесса ...

Когда вы устанавливаете дополнение, javascript оказывается на диске в вашем профиле Firefox. Если вы отредактируете его там и перезапустите Firefox, новые вещи будут подобраны. Когда вы закончите, создайте xpi из файлов в вашем профиле.

person Stobor    schedule 03.07.2009
comment
вам не нужен шаг «перезапустить firefox». если вы устанавливаете дополнение для разработчиков расширений, есть возможность "перезагрузить Chrome". вы можете добавить свою собственную маленькую кнопку на панель инструментов, чтобы сделать это (проверьте источник расширения). - person nikcub; 27.08.2011

http://simplygenius.com/2005/08/debugging-firefox-mozilla-extensions_25.html содержит хорошее описание отладки расширений FF в venkman.

person AlexEzh    schedule 25.07.2009
comment
Я использовал Venkman, но в последнее время встроенный отладчик Firefox Browser Toolbox стал намного лучше. - person NoBugs; 29.03.2014

Зашел сюда через гугл - в FF nightly 31 появились новые инструменты для отладки надстроек. Его бог посылает. Подробности здесь: https://blog.mozilla.org/addons/2014/04/08/add-on-debugger-now-in-firefox-nightly/

person Jonny    schedule 24.05.2014
comment
Просто предупреждение здесь, и я цитирую: мы поддерживаем отладку любой надстройки без перезапуска, надстройки старого стиля пока не будут поддерживаться. - Дэйв Таунсенд (по ссылке, размещенной выше). - person Nirav Zaveri; 27.06.2014

Чтобы сделать разработку надстройки ускоренной, важно исключить перезапуск FF для проверки каждого изменения кода. Три варианта, которые я могу придумать:

Я использовал последние два варианта, и они отлично работают для меня.

person user3526    schedule 12.07.2014

Вы также можете установить динамические точки останова с помощью ключевого слова debugger. Откройте «Набор инструментов браузера», чтобы отладчик остановился на строке.

Я думаю, это хорошо, потому что вам не нужно искать исходный файл и строку после каждого перезапуска.

Также взгляните на этот ответ Отладка кода расширения в firefox, в котором упоминаются улучшенные возможности отладчика для расширений без перезапуска начиная с Firefox 23.

person Gerold Meisinger    schedule 03.06.2014