Автор оригинала: FreeCodeCamp Community Member.
Это следующее до моего Предыдущий пост О создании PWA с созданием-реактивным приложением (CRA). В связи с подключенным постом я обсуждал, как мы могли бы построить пользовательский сервисный работник (SW), оставаясь в рамках Create-React-App.
Если вы следили вместе с постом (и, надеюсь, получили его работать), вы заметили один критический недостаток. Это все еще чрезвычайно трудно развивать SW в среде Dev. По сути, вам нужно будет изменить код SW, запустите процесс сборки, проверьте его, утяните любые ошибки, обновите и повторите. Выступая из опыта, это утомительный процесс.
Давайте пойдем вперед и выяснить, как решить эту проблему.
Работа в режиме разработки
Хорошо, так как мы получаем SW, работающие в режиме Dev, поэтому мы можем быстро написать какой-то плохой код, и выяснить, что работает и что нет?
Во-первых, давайте посмотрим, почему он не работает в режиме Dev. Создайте свежий проект CRA и откройте RegisterServiceWorker.js
под SRC
каталог.
В приведенном выше цисте у меня есть только соответствующий кусок кода. Вы заметите условный чек process.env.node_env
Отказ Это проверяется, если вы используете производственную сборку. Если вы не используете сборку производства, SW будет заменен файлом NO-OP.
Разумность этого решения предоставляется в этом Выпуск GitHub Отказ
Во-первых, попробуйте запустить Пряжа начать
В вашем приложении и проверьте файл SW в окне панели инструментов. Если вы нажмете на Service-Worker.js
Ссылка на панели инструментов, вы будете отображены следующий файл:
К счастью, для этого есть простое исправление. Это легкий двухэтапный процесс.
Во-первых, внутри RegisterServiceWorker.js
Файл, ищите window.addeventListener («нагрузка»)
Функциональный вызов. Первая строка – это декларация для Swurl
который говорит:
const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
Переименуйте Сервис-работник
часть этого с чем-либо еще. Я собираюсь назвать мой Service-Worker-custom.js
Отказ
Во-вторых, создайте файл внутри вашего публичного каталога с помощью Точно так же имя Как пользовательское имя, с которым вы только что придумали. Итак, я бы создал файл под названием Service-Worker-custom.js
внутри публичного каталога.
Теперь внутри Service-Worker-custom.js
Поместите простую оператор журнала. Что-то вроде: Console.log («Мой пользовательский сервис»)
Отказ
Теперь снова запустите свое приложение с Пряжа начать
И вы должны увидеть оператор журнала в вашей консоли браузера. Вам может потребоваться отменить регистрацию предыдущего служебного работника, если вы когда-нибудь запустили пряжу начать до этого.
Итак, там у вас есть. Пользовательский служащий, который вы можете безопасно работать внутри режима Dev.
ПРИМЕЧАНИЕ. Неразумно тестировать сервисный работник в разработке env вне личного режима просмотра в вашем браузере. Кроме того, всегда убедитесь, что обновление на перезагрузке проверяется внутри вашего окна «Инструменты DEV» при тестировании в режиме Dev.
Сочетать dev и prod
Теперь мы выяснили, как проверить SW в режиме разработки. Тем не менее, нам также нужно найти способ ввести наш заказный код в SW, созданный CRA в производственной сборке.
Если вы держите все, что и с конфигурациями, которые мы сделали до сих пор и запустили процесс сборки и проверьте сборку в вашем браузере, вы заметите, что созданный файл SW – это пользовательский, который мы создали. Это проблема, потому что мы хотим иметь возможность объединить доброту того, что CRA предложит нам наш собственный код.
Мы можем сделать это с SW-regache
библиотека. Я представил эту библиотеку в моем Предыдущий пост Отказ Вот Github Link к SW-regache
библиотека.
Установите библиотеку с помощью пряжа Добавить SW-цари собой
Отказ Как только вы сделали это, создайте SW-Pracache-Config.js
Файл в вашем корневом каталоге. Вот мой файл:
Я ввел большую часть этого файла в Предыдущий пост Отказ Единственный новый бит – ImportCripts
вариант. Это довольно неясно, это просто импортирует файл, указанный по пути, и мы пытаемся импортировать наш пользовательский файл SW.
Вы заметите, что путь файла не хватает ./public
префикс, несмотря на присутствующий файл в нашем публичный
каталог. Я объясню это немного.
Теперь обновите свой Package.json
Файл с модификацией для построить
команда. Сделать свой построить
Команда следующее:
React-Scripts Build && SW-Pracache-Pracache-Config.js
Теперь давайте вернемся к файлу, который мы предоставили опцию ImportScripts. Если вы заметите, SW-regache
по существу работает в качестве процесса постепенного сооружения. Теперь, если вы просто запустите процесс сборки, и откройте созданный каталог сборки, вы заметите ваш файл пользовательского обслуживания в папке сборки. Когда мы предоставляем путь к ImportCripts
Опция, мы предоставляем это относительно каталога сборки!
После того, как вы сделали все это, пройдите вперед и запустите сборку своего приложения, и вы заметите, что оператор журнала снова появляется в консоли браузера.
Ну, там у вас есть! Теперь вы можете ввести какой-то пользовательский код SW в SW по умолчанию, сгенерированный CRA!