Извлеките потерянный код из развертывания Firebase Hosting

Мне нужно загрузить свой код с сайта, размещенного на Firebase, я создал сайт прошлым летом, и у меня больше нет кода локально на моем ноутбуке. Я хотел бы перекодировать некоторые фрагменты, но у меня больше нет исходного кода (кроме javascript и css, которые я могу почерпнуть из обслуживаемых страниц). Я не могу найти способ получить код с сайта firebase, есть ли у кого-нибудь идеи?


person Randal Wilcox    schedule 09.10.2014    source источник
comment
Кажется странным размещать здесь вопросы, но это то, что firebase просит пользователей делать: по вопросам API и общей технической помощи мы рекомендуем вам использовать тег Firebase в StackOverflow. Мы очень внимательно следим за вопросами, и использование StackOverflow позволяет другим извлекать выгоду из ответов.   -  person Randal Wilcox    schedule 10.10.2014
comment
Рэндал, совсем не странно размещать здесь API или технические вопросы. @Mooseman - это не документированная и не поддерживаемая функция Firebase, и поэтому не является проблемой документации.   -  person Kato    schedule 10.10.2014
comment
Хостинг Firebase просто сохраняет статические ресурсы вашего веб-сайта, поэтому он (обычно) не содержит ничего, кроме JavaScript, CSS и HTML. Какой еще код, кроме JavaScript, вы ищете?   -  person Frank van Puffelen    schedule 10.10.2014
comment
Угловые представления, которые я написал для проекта   -  person Randal Wilcox    schedule 10.10.2014


Ответы (3)


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

Существует сценарий, который вы можете запустить для загрузки всех ресурсов с помощью интерфейса командной строки. Вы можете найти сценарий и инструкции здесь. Его также можно запустить с помощью npx:

npx https://gist.github.com/mbleigh/9c8680cf319ace2f506f57380da66e7d <site_name>

Обратите внимание, что это возвращает только скомпилированный / визуализированный контент из указанную общую папку, а не какой-либо предварительно скомпилированный исходный код, который у вас мог быть на машине разработки.

Поскольку ваши файлы являются статическими активами, вы также можете очистить их с помощью wget. Это хуже для продвинутых приложений, так как вы получите визуализированный контент, а не источник:

wget -r -np https://<YOURAPPNAME>.firebaseapp.com

Подробнее о парсинге веб-сайтов читайте здесь: https://apple.stackexchange.com/questions/100570/getting-files-all-at-once-from-a-web-page-using-curl

person Kato    schedule 09.10.2014
comment
Интересно, что развертывание firebase, похоже, не развертывает весь мой проект (по модулю параметра игнорирования в firebase.json), а только ресурсы, необходимые для моего файла index.html. - person Andrew Swan; 01.04.2015
comment
Развертывание Firebase загружает все файлы, wget может очистить только те, к которым он может получить доступ через ваш index.html - person Chris Raynor; 01.04.2015
comment
что такое Windows-версия unix wget -r -np? нет -r для wget в Windows 10 - person roberto tomás; 14.02.2017
comment
@ robertotomás в W10 вы можете использовать пакеты unix через scoop. Сначала перейдите к scoop и установите его. Затем вы получите scoop, доступный в терминале (cmd), введите scoop install wget, и вы будете устанавливать пакет linux. Наконец, если вы разработчик и используете W10 для работы, я бы порекомендовал вам включить инструменты разработчика. - person mentorgashi; 23.12.2018
comment
Я пробовал этот метод wget -r -np https://<YOURAPPNAME>.firebaseapp.com, он работает, но не все файлы загружаются в macbook. Некоторые папки отсутствуют. Почему? @Kato - person Jamshaid Alam; 18.09.2020
comment
На хостинге Firebase только есть файлы из вашей общей папки. Если вы используете webpack или любые другие скрипты сборки, вы, вероятно, загрузили на хостинг только свои скомпилированные файлы. Вы не можете скачать то, что никогда не было загружено. - person Kiana; 09.03.2021

Возможно, этот ответ не совсем соответствует запрошенному направлению, но для того, чтобы перечислить файлы, которые загружаются, вы можете во время развертывания использовать переключатель --debug:

firebase deploy --debug

С этой опцией вы увидите POST-запрос. Что-то подобное:

>>> HTTP REQUEST POST https://deploy.firebase.com/firebase/yourapp/releases?token=XXX public=dist, version=-KE5UDaj7oCppckjEBaE, prefix=-KE5UDaj7oCppckjEBaE/, manifest=[path=404.html, object=404.html, path=scripts\main\main.html, object=scripts\main\main.html, path=scripts\scripts.d6106dbd.js, object=scripts\scripts.d6106dbd.js, path=scripts\vendor.68cdc83b.js, object=scripts\vendor.68cdc83b.js, path=styles\main.5b335e2d.css, object=styles\main.5b335e2d.css, path=styles\vendor.d41d8cd9.css, object=styles\vendor.d41d8cd9.css], rules=undefined <<< HTTP RESPONSE 200 server=nginx, date=Wed, 30 Mar 2016 07:46:31 GMT, content-type=application/json; charset=utf-8, content-length=34, connection=close, access-control-allow-origin=*, access-control-allow-methods=GET, PUT, POST, DELETE, OPTIONS, strict-transport-security=max-age=31556926; includeSubDomains; preload, x-content-type-options=nosniff

Это может помочь отследить, что загружено на хостинг firebase.

Но я согласен с тем, что отсутствие возможности простого перечисления файлов на хостинге firebase не способствует использованию этой услуги.

person Przemek Nowak    schedule 30.03.2016
comment
Я не получаю ни object, ни path в HTTP REQUEST POST, если я бегу firebase deploy --debug. Похоже, это больше не работает - person Matt; 25.05.2018
comment
Лучше и проще использовать API хостинга, чтобы получить текущую версию, а затем перечислить файлы в этой версии. Суть [1] - это пример того, как это сделать 1. - person Kiana; 09.03.2021

  1. Это довольно просто, единственное, что вам нужно сделать, это перейти на свой размещенный сайт.
  2. Щелкните правой кнопкой мыши и перейдите к просмотру element => debugger. Там вы найдете статическую папку.
  3. расслабьтесь, все ваши js файлы есть (только передняя часть), вы можете скопировать свой код.
person Ujjwal Gupta    schedule 30.03.2019