fix(pwa): site baseurl not passed to app.js (#1955)

This commit is contained in:
Cotes Chung 2024-09-18 22:32:26 +08:00 committed by GitHub
parent 3ab3b844d2
commit 5a63244721
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 14 additions and 12 deletions

View file

@ -92,7 +92,10 @@
{% if jekyll.environment == 'production' %} {% if jekyll.environment == 'production' %}
<!-- PWA --> <!-- PWA -->
{% if site.pwa.enabled %} {% if site.pwa.enabled %}
<script defer src="{{ 'app.min.js' | relative_url }}"></script> <script
defer
src="{{ 'app.min.js' | relative_url }}?baseurl={{ site.baseurl | default: '' }}&register={{ site.pwa.cache.enabled }}"
></script>
{% endif %} {% endif %}
<!-- Web Analytics --> <!-- Web Analytics -->

View file

@ -1,15 +1,19 @@
import { pwa, baseurl } from '../../_config.yml';
import Toast from 'bootstrap/js/src/toast'; import Toast from 'bootstrap/js/src/toast';
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
if (pwa.enabled) { // Get Jekyll config from URL parameters
const swUrl = `${baseurl}/sw.min.js`; const src = new URL(document.currentScript.src);
const register = src.searchParams.get('register');
const baseUrl = src.searchParams.get('baseurl');
if (register) {
const swUrl = `${baseUrl}/sw.min.js`;
const notification = document.getElementById('notification'); const notification = document.getElementById('notification');
const btnRefresh = notification.querySelector('.toast-body>button'); const btnRefresh = notification.querySelector('.toast-body>button');
const popupWindow = Toast.getOrCreateInstance(notification); const popupWindow = Toast.getOrCreateInstance(notification);
navigator.serviceWorker.register(swUrl).then((registration) => { navigator.serviceWorker.register(swUrl).then((registration) => {
// In case the user ignores the notification // Restore the update window that was last manually closed by the user
if (registration.waiting) { if (registration.waiting) {
popupWindow.show(); popupWindow.show();
} }

View file

@ -1,6 +1,4 @@
import { baseurl } from '../../_config.yml'; importScripts('./assets/js/data/swconf.js');
importScripts(`${baseurl}/assets/js/data/swconf.js`);
const purge = swconf.purge; const purge = swconf.purge;
const interceptor = swconf.interceptor; const interceptor = swconf.interceptor;

View file

@ -36,7 +36,6 @@
"@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-terser": "^0.4.4",
"@rollup/plugin-yaml": "^4.1.2",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3", "@semantic-release/exec": "^6.0.3",
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",

View file

@ -1,7 +1,6 @@
import babel from '@rollup/plugin-babel'; import babel from '@rollup/plugin-babel';
import terser from '@rollup/plugin-terser'; import terser from '@rollup/plugin-terser';
import { nodeResolve } from '@rollup/plugin-node-resolve'; import { nodeResolve } from '@rollup/plugin-node-resolve';
import yaml from '@rollup/plugin-yaml';
import fs from 'fs'; import fs from 'fs';
import pkg from './package.json'; import pkg from './package.json';
@ -43,7 +42,7 @@ function build(filename, { src = SRC_DEFAULT, jekyll = false } = {}) {
format: 'iife', format: 'iife',
name: 'Chirpy', name: 'Chirpy',
banner, banner,
sourcemap: !isProd sourcemap: !isProd && !jekyll
}, },
watch: { watch: {
include: `${src}/**` include: `${src}/**`
@ -55,7 +54,6 @@ function build(filename, { src = SRC_DEFAULT, jekyll = false } = {}) {
plugins: ['@babel/plugin-transform-class-properties'] plugins: ['@babel/plugin-transform-class-properties']
}), }),
nodeResolve(), nodeResolve(),
yaml(),
isProd && terser(), isProd && terser(),
jekyll && insertFrontmatter() jekyll && insertFrontmatter()
] ]