From ab6672429f500772cbb5da1fc03a64972a031259 Mon Sep 17 00:00:00 2001 From: Jerry Date: Sat, 19 Feb 2022 00:43:01 +0800 Subject: [PATCH] =?UTF-8?q?breaking=20changes:=20cdn=20=E5=8F=AF=E4=B8=80?= =?UTF-8?q?=E9=8D=B5=E8=A8=AD=E7=BD=AE=20=E6=9C=AC=E5=9C=B0=E6=96=87?= =?UTF-8?q?=E4=BB=B6/=E5=8F=AF=E5=96=AE=E7=8D=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=BB=E9=A1=8C=E6=96=87=E4=BB=B6=EF=BC=8C=E7=AC=AC=E4=B8=89?= =?UTF-8?q?=E6=96=B9=E6=96=87=E4=BB=B6=E7=9A=84=20cdn=20breaking=20changes?= =?UTF-8?q?:=20=E7=A7=BB=E9=99=A4=20utterances=EF=BC=8Cgiscus=EF=BC=8C=20a?= =?UTF-8?q?ddtoany=EF=BC=8C=20busuanzi=20=E7=9A=84=20cdn=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 143 ++++----- layout/includes/additional-js.pug | 26 +- layout/includes/head.pug | 8 +- layout/includes/head/config.pug | 4 +- layout/includes/third-party/aplayer.pug | 6 +- .../third-party/card-post-count/twikoo.pug | 2 +- .../third-party/card-post-count/valine.pug | 2 +- .../third-party/card-post-count/waline.pug | 2 +- .../third-party/comments/disqusjs.pug | 4 +- .../includes/third-party/comments/giscus.pug | 2 +- .../includes/third-party/comments/gitalk.pug | 4 +- .../includes/third-party/comments/twikoo.pug | 2 +- .../third-party/comments/utterances.pug | 2 +- .../includes/third-party/comments/valine.pug | 2 +- .../includes/third-party/comments/waline.pug | 2 +- layout/includes/third-party/effect.pug | 14 +- layout/includes/third-party/math/katex.pug | 6 +- layout/includes/third-party/math/mathjax.pug | 2 +- layout/includes/third-party/math/mermaid.pug | 2 +- .../newest-comments/twikoo-comment.pug | 2 +- .../third-party/newest-comments/valine.pug | 2 +- .../third-party/newest-comments/waline.pug | 2 +- layout/includes/third-party/pangu.pug | 2 +- layout/includes/third-party/pjax.pug | 2 +- layout/includes/third-party/prismjs.pug | 6 +- .../includes/third-party/share/addtoany.pug | 2 +- .../includes/third-party/share/share-js.pug | 4 +- layout/includes/third-party/subtitle.pug | 8 +- package.json | 2 +- scripts/events/config.js | 302 +++++++++++++----- 30 files changed, 335 insertions(+), 234 deletions(-) diff --git a/_config.yml b/_config.yml index 96bbe9a..6ba6617 100644 --- a/_config.yml +++ b/_config.yml @@ -827,88 +827,61 @@ inject: # Don't modify the following settings unless you know how they work # 非必要請不要修改 CDN: - # main - main_css: - main: - utils: - - # pjax - pjax: - - # comments - gitalk: - gitalk_css: - blueimp_md5: - valine: - disqusjs: - disqusjs_css: - utterances: - twikoo: - waline: - giscus: - - # share - addtoany: - sharejs: - sharejs_css: - - # search - local_search: - algolia_js: - algolia_search_v4: - instantsearch_v4: - - # math - mathjax: - katex: - katex_copytex: - katex_copytex_css: - mermaid: - - # count - busuanzi: - - # background effect - canvas_ribbon: - canvas_fluttering_ribbon: - canvas_nest: - - lazyload: - instantpage: - typed: - pangu: - - # photo - fancybox_css_v4: - fancybox_v4: - medium_zoom: - - # snackbar - snackbar_css: - snackbar: - - # effect - activate_power_mode: - fireworks: - click_heart: - ClickShowText: - - # fontawesome - fontawesomeV6: - - # Conversion between Traditional and Simplified Chinese - translate: - - # flickr-justified-gallery - flickr_justified_gallery_js: - flickr_justified_gallery_css: - - # aplayer - aplayer_css: - aplayer_js: - meting_js: - - # Prism.js - prismjs_js: - prismjs_lineNumber_js: - prismjs_autoloader: \ No newline at end of file + # The CDN provider of internal scripts (主題內部 js 的 cdn 配置) + # option: local/jsdelivr + # Dev version cannot choose jsdelivr (dev版的主題不能設置為 jsdelivr) + internal_provider: local + # The CDN provider of third party scripts (第三方 js 的 cdn 配置) + # option: local/jsdelivr + # when set it to local, you need to install hexo-butterfly-extjs + third_party_provider: jsdelivr + option: + # main_css: + # main: + # utils: + # translate: + # local_search: + # algolia_js: + # algolia_search_v4: + # instantsearch_v4: + # pjax: + # gitalk: + # gitalk_css: + # blueimp_md5: + # valine: + # disqusjs: + # disqusjs_css: + # twikoo: + # waline: + # sharejs: + # sharejs_css: + # mathjax: + # katex: + # katex_copytex: + # katex_copytex_css: + # mermaid: + # canvas_ribbon: + # canvas_fluttering_ribbon: + # canvas_nest: + # lazyload: + # instantpage: + # typed: + # pangu: + # fancybox_css_v4: + # fancybox_v4: + # medium_zoom: + # snackbar_css: + # snackbar: + # activate_power_mode: + # fireworks: + # click_heart: + # ClickShowText: + # fontawesomeV6: + # flickr_justified_gallery_js: + # flickr_justified_gallery_css: + # aplayer_css: + # aplayer_js: + # meting_js: + # prismjs_js: + # prismjs_lineNumber_js: + # prismjs_autoloader: \ No newline at end of file diff --git a/layout/includes/additional-js.pug b/layout/includes/additional-js.pug index 79fc8b4..7d1e93e 100644 --- a/layout/includes/additional-js.pug +++ b/layout/includes/additional-js.pug @@ -1,34 +1,34 @@ div - script(src=url_for(theme.CDN.utils)) - script(src=url_for(theme.CDN.main)) + script(src=url_for(theme.asset.utils)) + script(src=url_for(theme.asset.main)) if theme.translate.enable - script(src=url_for(theme.CDN.translate)) + script(src=url_for(theme.asset.translate)) if theme.medium_zoom - script(src=url_for(theme.CDN.medium_zoom)) + script(src=url_for(theme.asset.medium_zoom)) else if theme.fancybox - script(src=url_for(theme.CDN.fancybox_v4)) + script(src=url_for(theme.asset.fancybox_v4)) if theme.instantpage - script(src=url_for(theme.CDN.instantpage), type='module') + script(src=url_for(theme.asset.instantpage), type='module') if theme.lazyload.enable - script(src=url_for(theme.CDN.lazyload)) + script(src=url_for(theme.asset.lazyload)) if theme.snackbar.enable - script(src=url_for(theme.CDN.snackbar)) + script(src=url_for(theme.asset.snackbar)) if theme.pangu.enable != partial("includes/third-party/pangu.pug", {}, { cache: true }) //- search if theme.algolia_search.enable - script(src=url_for(theme.CDN.algolia_search_v4)) - script(src=url_for(theme.CDN.instantsearch_v4)) - script(src=url_for(theme.CDN.algolia_js)) + script(src=url_for(theme.asset.algolia_search_v4)) + script(src=url_for(theme.asset.instantsearch_v4)) + script(src=url_for(theme.asset.algolia_js)) else if theme.local_search.enable - script(src=url_for(theme.CDN.local_search)) + script(src=url_for(theme.asset.local_search)) if theme.preloader != partial("includes/loading/loading-js", {}, { cache: true }) @@ -69,4 +69,4 @@ div != partial("includes/third-party/pjax", {}, { cache: true }) if theme.busuanzi.site_uv || theme.busuanzi.site_pv || theme.busuanzi.page_pv - script(async data-pjax src=url_for(theme.CDN.busuanzi)) + script(async data-pjax src='//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js') diff --git a/layout/includes/head.pug b/layout/includes/head.pug index 748684c..5c7c397 100644 --- a/layout/includes/head.pug +++ b/layout/includes/head.pug @@ -46,14 +46,14 @@ if (theme.pwa && theme.pwa.enable) !=partial('includes/head/pwa', {}, {cache: true}) //- main css -link(rel='stylesheet', href=url_for(theme.CDN.main_css)) -link(rel='stylesheet', href=url_for(theme.CDN.fontawesomeV6) media="print" onload="this.media='all'") +link(rel='stylesheet', href=url_for(theme.asset.main_css)) +link(rel='stylesheet', href=url_for(theme.asset.fontawesomeV6) media="print" onload="this.media='all'") if (theme.snackbar && theme.snackbar.enable) - link(rel='stylesheet', href=url_for(theme.CDN.snackbar_css) media="print" onload="this.media='all'") + link(rel='stylesheet', href=url_for(theme.asset.snackbar_css) media="print" onload="this.media='all'") if theme.fancybox - link(rel='stylesheet' href=url_for(theme.CDN.fancybox_css_v4) media="print" onload="this.media='all'") + link(rel='stylesheet' href=url_for(theme.asset.fancybox_css_v4) media="print" onload="this.media='all'") //- google_adsense !=partial('includes/head/google_adsense', {}, {cache: true}) diff --git a/layout/includes/head/config.pug b/layout/includes/head/config.pug index 49fe4fe..3cc2808 100644 --- a/layout/includes/head/config.pug +++ b/layout/includes/head/config.pug @@ -113,8 +113,8 @@ script. Snackbar: !{Snackbar}, source: { justifiedGallery: { - js: '!{url_for(theme.CDN.flickr_justified_gallery_js)}', - css: '!{url_for(theme.CDN.flickr_justified_gallery_css)}' + js: '!{url_for(theme.asset.flickr_justified_gallery_js)}', + css: '!{url_for(theme.asset.flickr_justified_gallery_css)}' } }, isPhotoFigcaption: !{theme.photofigcaption}, diff --git a/layout/includes/third-party/aplayer.pug b/layout/includes/third-party/aplayer.pug index dd7af2f..c439c4c 100644 --- a/layout/includes/third-party/aplayer.pug +++ b/layout/includes/third-party/aplayer.pug @@ -1,3 +1,3 @@ -link(rel='stylesheet' href=url_for(theme.CDN.aplayer_css) media="print" onload="this.media='all'") -script(src=url_for(theme.CDN.aplayer_js)) -script(src=url_for(theme.CDN.meting_js)) \ No newline at end of file +link(rel='stylesheet' href=url_for(theme.asset.aplayer_css) media="print" onload="this.media='all'") +script(src=url_for(theme.asset.aplayer_js)) +script(src=url_for(theme.asset.meting_js)) \ No newline at end of file diff --git a/layout/includes/third-party/card-post-count/twikoo.pug b/layout/includes/third-party/card-post-count/twikoo.pug index 46ae7c9..68ab35b 100644 --- a/layout/includes/third-party/card-post-count/twikoo.pug +++ b/layout/includes/third-party/card-post-count/twikoo.pug @@ -28,7 +28,7 @@ script. if (typeof twikoo === 'object') { runTwikoo() } else { - getScript('!{theme.CDN.twikoo}').then(runTwikoo) + getScript('!{theme.asset.twikoo}').then(runTwikoo) } } diff --git a/layout/includes/third-party/card-post-count/valine.pug b/layout/includes/third-party/card-post-count/valine.pug index 399151f..2d422fd 100644 --- a/layout/includes/third-party/card-post-count/valine.pug +++ b/layout/includes/third-party/card-post-count/valine.pug @@ -12,7 +12,7 @@ script. } if (typeof Valine === 'function') initValine() - else getScript('!{url_for(theme.CDN.valine)}').then(initValine) + else getScript('!{url_for(theme.asset.valine)}').then(initValine) } window.pjax ? loadValine() : window.addEventListener('load', loadValine) diff --git a/layout/includes/third-party/card-post-count/waline.pug b/layout/includes/third-party/card-post-count/waline.pug index 7090c35..8b05203 100644 --- a/layout/includes/third-party/card-post-count/waline.pug +++ b/layout/includes/third-party/card-post-count/waline.pug @@ -10,7 +10,7 @@ script. } if (typeof Waline === 'function') initWaline() - else getScript('!{url_for(theme.CDN.waline)}').then(initWaline) + else getScript('!{url_for(theme.asset.waline)}').then(initWaline) } window.pjax ? loadWaline() : window.addEventListener('load', loadWaline) diff --git a/layout/includes/third-party/comments/disqusjs.pug b/layout/includes/third-party/comments/disqusjs.pug index 268c16f..344be55 100644 --- a/layout/includes/third-party/comments/disqusjs.pug +++ b/layout/includes/third-party/comments/disqusjs.pug @@ -5,7 +5,7 @@ script. function addDisqusjsCSS () { const ele = document.createElement('link') ele.rel = 'stylesheet' - ele.href= '!{url_for(theme.CDN.disqusjs_css)}' + ele.href= '!{url_for(theme.asset.disqusjs_css)}' document.getElementsByTagName('head')[0].appendChild(ele) } @@ -26,7 +26,7 @@ script. if (window.disqusJsLoad) initDisqusjs() else { addDisqusjsCSS() - getScript('!{url_for(theme.CDN.disqusjs)}').then(initDisqusjs) + getScript('!{url_for(theme.asset.disqusjs)}').then(initDisqusjs) window.disqusJsLoad = true } } diff --git a/layout/includes/third-party/comments/giscus.pug b/layout/includes/third-party/comments/giscus.pug index b09bf5a..df19568 100644 --- a/layout/includes/third-party/comments/giscus.pug +++ b/layout/includes/third-party/comments/giscus.pug @@ -5,7 +5,7 @@ script. let nowTheme = document.documentElement.getAttribute('data-theme') === 'dark' ? '!{themes.dark}' : '!{themes.light}' const config = Object.assign({ - src: '!{theme.CDN.giscus}', + src: 'https://giscus.app/client.js', 'data-repo': '!{repo}', 'data-repo-id': '!{repo_id}', 'data-category-id': '!{category_id}', diff --git a/layout/includes/third-party/comments/gitalk.pug b/layout/includes/third-party/comments/gitalk.pug index 06ecfd9..fccb64d 100644 --- a/layout/includes/third-party/comments/gitalk.pug +++ b/layout/includes/third-party/comments/gitalk.pug @@ -2,7 +2,7 @@ script. function addGitalkSource () { const ele = document.createElement('link') ele.rel = 'stylesheet' - ele.href= '!{url_for(theme.CDN.gitalk_css)}' + ele.href= '!{url_for(theme.asset.gitalk_css)}' document.getElementsByTagName('head')[0].appendChild(ele) } @@ -24,7 +24,7 @@ script. if (typeof Gitalk === 'function') initGitalk() else { addGitalkSource() - getScript('!{url_for(theme.CDN.gitalk)}').then(initGitalk) + getScript('!{url_for(theme.asset.gitalk)}').then(initGitalk) } } diff --git a/layout/includes/third-party/comments/twikoo.pug b/layout/includes/third-party/comments/twikoo.pug index d7a8831..ee9c6ff 100644 --- a/layout/includes/third-party/comments/twikoo.pug +++ b/layout/includes/third-party/comments/twikoo.pug @@ -37,7 +37,7 @@ script. setTimeout(runFn,0) return } - getScript('!{theme.CDN.twikoo}').then(runFn) + getScript('!{theme.asset.twikoo}').then(runFn) } if ('!{use[0]}' === 'Twikoo' || !!{lazyload}) { diff --git a/layout/includes/third-party/comments/utterances.pug b/layout/includes/third-party/comments/utterances.pug index 25cccf2..7f61831 100644 --- a/layout/includes/third-party/comments/utterances.pug +++ b/layout/includes/third-party/comments/utterances.pug @@ -2,7 +2,7 @@ script. function loadUtterances () { let ele = document.createElement('script') ele.setAttribute('id', 'utterances_comment') - ele.setAttribute('src', '!{url_for(theme.CDN.utterances)}') + ele.setAttribute('src', 'https://utteranc.es/client.js') ele.setAttribute('repo', '!{theme.utterances.repo}') ele.setAttribute('issue-term', '!{theme.utterances.issue_term}') let nowTheme = document.documentElement.getAttribute('data-theme') === 'dark' ? '#{theme.utterances.dark_theme}' : '#{theme.utterances.light_theme}' diff --git a/layout/includes/third-party/comments/valine.pug b/layout/includes/third-party/comments/valine.pug index 91b3110..025849e 100644 --- a/layout/includes/third-party/comments/valine.pug +++ b/layout/includes/third-party/comments/valine.pug @@ -18,7 +18,7 @@ script. } if (typeof Valine === 'function') initValine() - else getScript('!{url_for(theme.CDN.valine)}').then(initValine) + else getScript('!{url_for(theme.asset.valine)}').then(initValine) } if ('!{theme.comments.use[0]}' === 'Valine' || !!{theme.comments.lazyload}) { diff --git a/layout/includes/third-party/comments/waline.pug b/layout/includes/third-party/comments/waline.pug index cfd05c2..65a68a3 100644 --- a/layout/includes/third-party/comments/waline.pug +++ b/layout/includes/third-party/comments/waline.pug @@ -13,7 +13,7 @@ script. } if (typeof Waline === 'function') initWaline() - else getScript('!{url_for(theme.CDN.waline)}').then(initWaline) + else getScript('!{url_for(theme.asset.waline)}').then(initWaline) } if ('!{theme.comments.use[0]}' === 'Waline' || !!{theme.comments.lazyload}) { diff --git a/layout/includes/third-party/effect.pug b/layout/includes/third-party/effect.pug index a6f3063..275297c 100644 --- a/layout/includes/third-party/effect.pug +++ b/layout/includes/third-party/effect.pug @@ -1,19 +1,19 @@ if theme.fireworks && theme.fireworks.enable canvas.fireworks(mobile=`${theme.fireworks.mobile}`) - script(src=url_for(theme.CDN.fireworks)) + script(src=url_for(theme.asset.fireworks)) if (theme.canvas_ribbon && theme.canvas_ribbon.enable) - script(defer id="ribbon" src=url_for(theme.CDN.canvas_ribbon) size=theme.canvas_ribbon.size + script(defer id="ribbon" src=url_for(theme.asset.canvas_ribbon) size=theme.canvas_ribbon.size alpha=theme.canvas_ribbon.alpha zIndex=theme.canvas_ribbon.zIndex mobile=`${theme.canvas_ribbon.mobile}` data-click=`${theme.canvas_ribbon.click_to_change}`) if (theme.canvas_fluttering_ribbon && theme.canvas_fluttering_ribbon.enable) - script(defer id="fluttering_ribbon" mobile=`${theme.canvas_fluttering_ribbon.mobile}` src=url_for(theme.CDN.canvas_fluttering_ribbon)) + script(defer id="fluttering_ribbon" mobile=`${theme.canvas_fluttering_ribbon.mobile}` src=url_for(theme.asset.canvas_fluttering_ribbon)) if (theme.canvas_nest && theme.canvas_nest.enable) - script#canvas_nest(defer color=theme.canvas_nest.color opacity=theme.canvas_nest.opacity zIndex=theme.canvas_nest.zIndex count=theme.canvas_nest.count mobile=`${theme.canvas_nest.mobile}` src=url_for(theme.CDN.canvas_nest)) + script#canvas_nest(defer color=theme.canvas_nest.color opacity=theme.canvas_nest.opacity zIndex=theme.canvas_nest.zIndex count=theme.canvas_nest.count mobile=`${theme.canvas_nest.mobile}` src=url_for(theme.asset.canvas_nest)) if theme.activate_power_mode.enable - script(src=url_for(theme.CDN.activate_power_mode)) + script(src=url_for(theme.asset.activate_power_mode)) script. POWERMODE.colorful = !{theme.activate_power_mode.colorful}; POWERMODE.shake = !{theme.activate_power_mode.shake}; @@ -22,11 +22,11 @@ if theme.activate_power_mode.enable //- 鼠標特效 if theme.click_heart && theme.click_heart.enable - script#click-heart(src=url_for(theme.CDN.click_heart) async mobile=`${theme.click_heart.mobile}`) + script#click-heart(src=url_for(theme.asset.click_heart) async mobile=`${theme.click_heart.mobile}`) if theme.ClickShowText && theme.ClickShowText.enable script#click-show-text( - src= url_for(theme.CDN.ClickShowText) + src= url_for(theme.asset.ClickShowText) data-mobile= `${theme.ClickShowText.mobile}` data-text= theme.ClickShowText.text.join(",") data-fontsize= theme.ClickShowText.fontSize diff --git a/layout/includes/third-party/math/katex.pug b/layout/includes/third-party/math/katex.pug index 028c626..9aa8301 100644 --- a/layout/includes/third-party/math/katex.pug +++ b/layout/includes/third-party/math/katex.pug @@ -1,6 +1,6 @@ -link(rel="stylesheet" type="text/css" href=theme.CDN.katex) -script(src=url_for(theme.CDN.katex_copytex)) -link(rel="stylesheet" type="text/css" href=theme.CDN.katex_copytex_css) +link(rel="stylesheet" type="text/css" href=theme.asset.katex) +script(src=url_for(theme.asset.katex_copytex)) +link(rel="stylesheet" type="text/css" href=theme.asset.katex_copytex_css) script. (() => { document.querySelectorAll('#article-container span.katex-display').forEach(item => { diff --git a/layout/includes/third-party/math/mathjax.pug b/layout/includes/third-party/math/mathjax.pug index b784218..f8b12bd 100644 --- a/layout/includes/third-party/math/mathjax.pug +++ b/layout/includes/third-party/math/mathjax.pug @@ -37,7 +37,7 @@ script. } const script = document.createElement('script') - script.src = '!{theme.CDN.mathjax}' + script.src = '!{theme.asset.mathjax}' script.id = 'MathJax-script' script.async = true document.head.appendChild(script) diff --git a/layout/includes/third-party/math/mermaid.pug b/layout/includes/third-party/math/mermaid.pug index 31dda5e..6bd8185 100644 --- a/layout/includes/third-party/math/mermaid.pug +++ b/layout/includes/third-party/math/mermaid.pug @@ -18,7 +18,7 @@ script. } const loadMermaid = () => { - window.loadMermaid ? runMermaid() : getScript('!{theme.CDN.mermaid}').then(runMermaid) + window.loadMermaid ? runMermaid() : getScript('!{theme.asset.mermaid}').then(runMermaid) } window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid) diff --git a/layout/includes/third-party/newest-comments/twikoo-comment.pug b/layout/includes/third-party/newest-comments/twikoo-comment.pug index 71b2803..9896b14 100644 --- a/layout/includes/third-party/newest-comments/twikoo-comment.pug +++ b/layout/includes/third-party/newest-comments/twikoo-comment.pug @@ -43,7 +43,7 @@ script. if (typeof twikoo === 'object') { runTwikoo() } else { - getScript('!{theme.CDN.twikoo}').then(runTwikoo) + getScript('!{theme.asset.twikoo}').then(runTwikoo) } } diff --git a/layout/includes/third-party/newest-comments/valine.pug b/layout/includes/third-party/newest-comments/valine.pug index dd39b13..ef0bb10 100644 --- a/layout/includes/third-party/newest-comments/valine.pug +++ b/layout/includes/third-party/newest-comments/valine.pug @@ -1,6 +1,6 @@ - let default_avatar = theme.valine.avatar -script(src=url_for(theme.CDN.blueimp_md5)) +script(src=url_for(theme.asset.blueimp_md5)) script. window.addEventListener('load', () => { const changeContent = (content) => { diff --git a/layout/includes/third-party/newest-comments/waline.pug b/layout/includes/third-party/newest-comments/waline.pug index ce0039e..80571c8 100644 --- a/layout/includes/third-party/newest-comments/waline.pug +++ b/layout/includes/third-party/newest-comments/waline.pug @@ -67,7 +67,7 @@ script. } if (typeof Waline === 'function') loadWaline() - else getScript('!{url_for(theme.CDN.waline)}').then(loadWaline) + else getScript('!{url_for(theme.asset.waline)}').then(loadWaline) } const newestCommentInit = () => { diff --git a/layout/includes/third-party/pangu.pug b/layout/includes/third-party/pangu.pug index 7ac1395..2027ca7 100644 --- a/layout/includes/third-party/pangu.pug +++ b/layout/includes/third-party/pangu.pug @@ -2,7 +2,7 @@ script. function panguFn () { if (typeof pangu === 'object') pangu.autoSpacingPage() else { - getScript('!{url_for(theme.CDN.pangu)}') + getScript('!{url_for(theme.asset.pangu)}') .then(() => { pangu.autoSpacingPage() }) diff --git a/layout/includes/third-party/pjax.pug b/layout/includes/third-party/pjax.pug index abdb88d..de318d5 100644 --- a/layout/includes/third-party/pjax.pug +++ b/layout/includes/third-party/pjax.pug @@ -12,7 +12,7 @@ if choose if choose.includes('Utterances') || choose.includes('Giscus') - pjaxSelectors.unshift('link[rel="canonical"]') -script(src=url_for(theme.CDN.pjax)) +script(src=url_for(theme.asset.pjax)) script. let pjaxSelectors = !{JSON.stringify(pjaxSelectors)} diff --git a/layout/includes/third-party/prismjs.pug b/layout/includes/third-party/prismjs.pug index b277e25..6af44dd 100644 --- a/layout/includes/third-party/prismjs.pug +++ b/layout/includes/third-party/prismjs.pug @@ -1,5 +1,5 @@ if config.prismjs && config.prismjs.enable && !config.prismjs.preprocess - script(src=url_for(theme.CDN.prismjs_js)) - script(src=url_for(theme.CDN.prismjs_autoloader)) + script(src=url_for(theme.asset.prismjs_js)) + script(src=url_for(theme.asset.prismjs_autoloader)) if config.prismjs.line_number - script(src=url_for(theme.CDN.prismjs_lineNumber_js)) + script(src=url_for(theme.asset.prismjs_lineNumber_js)) diff --git a/layout/includes/third-party/share/addtoany.pug b/layout/includes/third-party/share/addtoany.pug index a0a7aa2..d42f3be 100644 --- a/layout/includes/third-party/share/addtoany.pug +++ b/layout/includes/third-party/share/addtoany.pug @@ -5,6 +5,6 @@ a(class="a2a_button_" + name) a.a2a_dd(href="https://www.addtoany.com/share") -script(async src=url_for(theme.CDN.addtoany)) +script(async src='https://static.addtoany.com/menu/page.js') diff --git a/layout/includes/third-party/share/share-js.pug b/layout/includes/third-party/share/share-js.pug index 7cfaad2..0a566fa 100644 --- a/layout/includes/third-party/share/share-js.pug +++ b/layout/includes/third-party/share/share-js.pug @@ -1,3 +1,3 @@ .social-share(data-image=url_for(page.cover|| theme.avatar.img) data-sites= theme.sharejs.sites) -link(rel='stylesheet' href=url_for(theme.CDN.sharejs_css) media="print" onload="this.media='all'") -script(src=url_for(theme.CDN.sharejs) defer) \ No newline at end of file +link(rel='stylesheet' href=url_for(theme.asset.sharejs_css) media="print" onload="this.media='all'") +script(src=url_for(theme.asset.sharejs) defer) \ No newline at end of file diff --git a/layout/includes/third-party/subtitle.pug b/layout/includes/third-party/subtitle.pug index 21d705a..63915ec 100644 --- a/layout/includes/third-party/subtitle.pug +++ b/layout/includes/third-party/subtitle.pug @@ -29,7 +29,7 @@ case source if (typeof Typed === 'function') { subtitleType() } else { - getScript('!{url_for(theme.CDN.typed)}').then(subtitleType) + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) } } else { subtitleType() @@ -61,7 +61,7 @@ case source if (typeof Typed === 'function') { subtitleType() } else { - getScript('!{url_for(theme.CDN.typed)}').then(subtitleType) + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) } } else { subtitleType() @@ -94,7 +94,7 @@ case source if (typeof Typed === 'function') { subtitleType() } else { - getScript('!{url_for(theme.CDN.typed)}').then(subtitleType) + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) } } else { subtitleType() @@ -121,7 +121,7 @@ case source if (typeof Typed === 'function') { subtitleType() } else { - getScript('!{url_for(theme.CDN.typed)}').then(subtitleType) + getScript('!{url_for(theme.asset.typed)}').then(subtitleType) } } else { subtitleType() diff --git a/package.json b/package.json index 0caf766..ff4c103 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-theme-butterfly", - "version": "4.1.0", + "version": "4.2.0-b1", "description": "A Simple and Card UI Design theme for Hexo", "main": "package.json", "scripts": { diff --git a/scripts/events/config.js b/scripts/events/config.js index 33e663c..c324033 100644 --- a/scripts/events/config.js +++ b/scripts/events/config.js @@ -6,115 +6,243 @@ 'use strict' +const { version } = require('../../package.json') + hexo.extend.filter.register('before_generate', () => { const themeConfig = hexo.theme.config + const { CDN, comments } = themeConfig /** * Merge CDN */ + const internalData = { + main_css: { + cdn: '/css/index.css', + local: '/css/index.css' + }, + main: { + cdn: `https://cdn.jsdelivr.net/npm/hexo-theme-butterfly@${version}/source/js/main.min.js`, + local: '/js/main.js' + }, + utils: { + cdn: `https://cdn.jsdelivr.net/npm/hexo-theme-butterfly@${version}/source/js/utils.min.js`, + local: '/js/utils.js' + }, + translate: { + cdn: `https://cdn.jsdelivr.net/npm/hexo-theme-butterfly@${version}/source/js/tw_cn.min.js`, + local: '/js/tw_cn.js' + }, + local_search: { + cdn: `https://cdn.jsdelivr.net/npm/hexo-theme-butterfly@${version}/source/js/search/local-search.min.js`, + local: '/js/search/local-search.js' + }, + algolia_js: { + cdn: `https://cdn.jsdelivr.net/npm/hexo-theme-butterfly@${version}/source/js/search/algolia.min.js`, + local: '/js/search/algolia.js' + } + } - const defaultCDN = { - main_css: '/css/index.css', - main: '/js/main.js', - utils: '/js/utils.js', - - // pjax - pjax: 'https://cdn.jsdelivr.net/npm/pjax/pjax.min.js', - - // comments - gitalk: 'https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js', - gitalk_css: 'https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.css', - blueimp_md5: 'https://cdn.jsdelivr.net/npm/blueimp-md5/js/md5.min.js', - valine: 'https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js', - disqusjs: 'https://cdn.jsdelivr.net/npm/disqusjs@1/dist/disqus.js', - disqusjs_css: 'https://cdn.jsdelivr.net/npm/disqusjs@1/dist/disqusjs.css', - utterances: 'https://utteranc.es/client.js', - twikoo: 'https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js', - waline: 'https://cdn.jsdelivr.net/npm/@waline/client/dist/Waline.min.js', - giscus: 'https://giscus.app/client.js', - - // share - addtoany: 'https://static.addtoany.com/menu/page.js', - sharejs: 'https://cdn.jsdelivr.net/npm/social-share.js/dist/js/social-share.min.js', - sharejs_css: 'https://cdn.jsdelivr.net/npm/social-share.js/dist/css/share.min.css', - - // search - local_search: '/js/search/local-search.js', - algolia_js: '/js/search/algolia.js', - algolia_search_v4: 'https://cdn.jsdelivr.net/npm/algoliasearch@4/dist/algoliasearch-lite.umd.js', - instantsearch_v4: 'https://cdn.jsdelivr.net/npm/instantsearch.js@4/dist/instantsearch.production.min.js', - - // math - mathjax: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js', - katex: 'https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css', - katex_copytex: 'https://cdn.jsdelivr.net/npm/katex@latest/dist/contrib/copy-tex.min.js', - katex_copytex_css: 'https://cdn.jsdelivr.net/npm/katex@latest/dist/contrib/copy-tex.css', - mermaid: 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js', - - // count - busuanzi: '//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js', - - // background effect - canvas_ribbon: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js', - canvas_fluttering_ribbon: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-fluttering-ribbon.min.js', - canvas_nest: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-nest.min.js', - - lazyload: 'https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js', - instantpage: 'https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js', - typed: 'https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js', - pangu: 'https://cdn.jsdelivr.net/npm/pangu/dist/browser/pangu.min.js', - - // photo - fancybox_css_v4: 'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css', - fancybox_v4: 'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js', - medium_zoom: 'https://cdn.jsdelivr.net/npm/medium-zoom/dist/medium-zoom.min.js', - - // snackbar - snackbar_css: 'https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css', - snackbar: 'https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js', - - // effect - activate_power_mode: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js', - fireworks: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/fireworks.min.js', - click_heart: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-heart.min.js', - ClickShowText: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-show-text.min.js', - - // fontawesome - fontawesomeV6: 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css', - - // Conversion between Traditional and Simplified Chinese - translate: '/js/tw_cn.js', - - // flickr-justified-gallery - flickr_justified_gallery_js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.js', - flickr_justified_gallery_css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.css', - - // aplayer - aplayer_css: 'https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css', - aplayer_js: 'https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js', - meting_js: 'https://cdn.jsdelivr.net/gh/metowolf/MetingJS@1.2/dist/Meting.min.js', - - // Prism.js - prismjs_js: 'https://cdn.jsdelivr.net/npm/prismjs/prism.min.js', - prismjs_lineNumber_js: 'https://cdn.jsdelivr.net/npm/prismjs/plugins/line-numbers/prism-line-numbers.min.js', - prismjs_autoloader: 'https://cdn.jsdelivr.net/npm/prismjs/plugins/autoloader/prism-autoloader.min.js' + const data = { + algolia_search_v4: { + cdn: 'https://cdn.jsdelivr.net/npm/algoliasearch@4/dist/algoliasearch-lite.umd.js', + local: '/js/lib/algolia/algoliasearch-lite.umd.js' + }, + instantsearch_v4: { + cdn: 'https://cdn.jsdelivr.net/npm/instantsearch.js@4/dist/instantsearch.production.min.js', + local: '/js/lib/algolia/instantsearch.production.min.js' + }, + pjax: { + cdn: 'https://cdn.jsdelivr.net/npm/pjax/pjax.min.js', + local: '/js/lib/pjax/pjax.min.js' + }, + gitalk: { + cdn: 'https://cdn.jsdelivr.net/npm/gitalk@latest/dist/gitalk.min.js', + local: '/js/lib/gitalk/gitalk.min.js' + }, + gitalk_css: { + cdn: 'https://cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.css', + local: '/js/lib/gitalk/gitalk.css' + }, + blueimp_md5: { + cdn: 'https://cdn.jsdelivr.net/npm/blueimp-md5/js/md5.min.js', + local: '/js/lib/blueimp-md5/md5.min.js' + }, + valine: { + cdn: 'https://cdn.jsdelivr.net/npm/valine/dist/Valine.min.js', + local: '/js/lib/valine/Valine.min.js' + }, + disqusjs: { + cdn: 'https://cdn.jsdelivr.net/npm/disqusjs@1/dist/disqus.js', + local: '/js/lib/disqusjs/disqus.js' + }, + disqusjs_css: { + cdn: 'https://cdn.jsdelivr.net/npm/disqusjs@1/dist/disqusjs.css', + local: '/js/lib/disqusjs/disqusjs.css' + }, + twikoo: { + cdn: 'https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js', + local: '/js/lib/twikoo/twikoo.all.min.js' + }, + waline: { + cdn: 'https://cdn.jsdelivr.net/npm/@waline/client/dist/Waline.min.js', + local: '/js/lib/waline/Waline.min.js' + }, + sharejs: { + cdn: 'https://cdn.jsdelivr.net/npm/social-share.js/dist/js/social-share.min.js', + local: '/js/lib/social-share.js/dist/social-share.min.js' + }, + sharejs_css: { + cdn: 'https://cdn.jsdelivr.net/npm/social-share.js/dist/css/share.min.css', + local: '/js/lib/social-share.js/dist/share.min.css' + }, + mathjax: { + cdn: 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js', + local: '/js/lib/mathjax/tex-mml-chtml.js' + }, + katex: { + cdn: 'https://cdn.jsdelivr.net/npm/katex@latest/dist/katex.min.css', + local: '/js/lib/katex/katex.min.css' + }, + katex_copytex: { + cdn: 'https://cdn.jsdelivr.net/npm/katex@latest/dist/contrib/copy-tex.min.js', + local: '/js/lib/katex/copy-tex.min.js' + }, + katex_copytex_css: { + cdn: 'https://cdn.jsdelivr.net/npm/katex@latest/dist/contrib/copy-tex.css', + local: '/js/lib/katex/copy-tex.css' + }, + mermaid: { + cdn: 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js', + local: '/js/lib/mermaid/mermaid.min.js' + }, + canvas_ribbon: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-ribbon.min.js', + local: '/js/lib/effect/canvas-ribbon.min.js' + }, + canvas_fluttering_ribbon: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-fluttering-ribbon.min.js', + local: '/js/lib/effect/canvas-fluttering-ribbon.min.js' + }, + canvas_nest: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/canvas-nest.min.js', + local: '/js/lib/effect/canvas-nest.min.js' + }, + activate_power_mode: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/activate-power-mode.min.js', + local: '/js/lib/effect/activate-power-mode.min.js' + }, + fireworks: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/fireworks.min.js', + local: '/js/lib/effect/fireworks.min.js' + }, + click_heart: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-heart.min.js', + local: '/js/lib/effect/click-heart.min.js' + }, + ClickShowText: { + cdn: 'https://cdn.jsdelivr.net/npm/butterfly-extsrc@1/dist/click-show-text.min.js', + local: '/js/lib/effect/click-show-text.min.js' + }, + lazyload: { + cdn: 'https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js', + local: '/js/lib/vanilla-lazyload/lazyload.iife.min.js' + }, + instantpage: { + cdn: 'https://cdn.jsdelivr.net/npm/instant.page@5/instantpage.min.js', + local: '/js/lib/instant.page/instantpage.min.js' + }, + typed: { + cdn: 'https://cdn.jsdelivr.net/npm/typed.js/lib/typed.min.js', + local: '/js/lib/typed.js/typed.min.js' + }, + pangu: { + cdn: 'https://cdn.jsdelivr.net/npm/pangu@4/dist/browser/pangu.min.js', + local: '/js/lib/pangu/pangu.min.js' + }, + fancybox_css_v4: { + cdn: 'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css', + local: '/js/lib/fancyapps/fancybox.css' + }, + fancybox_v4: { + cdn: 'https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js', + local: '/js/lib/fancyapps/fancybox.umd.js' + }, + medium_zoom: { + cdn: 'https://cdn.jsdelivr.net/npm/medium-zoom/dist/medium-zoom.min.js', + local: '/js/lib/medium-zoom/medium-zoom.min.js' + }, + snackbar_css: { + cdn: 'https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.css', + local: '/js/lib/node-snackbar/snackbar.min.css' + }, + snackbar: { + cdn: 'https://cdn.jsdelivr.net/npm/node-snackbar/dist/snackbar.min.js', + local: '/js/lib/node-snackbar/snackbar.min.js' + }, + fontawesomeV6: { + cdn: 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6/css/all.min.css', + local: '/js/lib/fontawesome-free/dist/all.min.css' + }, + flickr_justified_gallery_js: { + cdn: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.js', + local: '/js/lib/flickr-justified-gallery/fjGallery.min.js' + }, + flickr_justified_gallery_css: { + cdn: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery@2/dist/fjGallery.min.css', + local: '/js/lib/flickr-justified-gallery/fjGallery.min.css' + }, + aplayer_css: { + cdn: 'https://cdn.jsdelivr.net/npm/aplayer@1/dist/APlayer.min.css', + local: '/js/lib/aplayer/APlayer.min.css' + }, + aplayer_js: { + cdn: 'https://cdn.jsdelivr.net/npm/aplayer@1/dist/APlayer.min.js', + local: '/js/lib/aplayer/APlayer.min.js' + }, + meting_js: { + cdn: 'https://cdn.jsdelivr.net/gh/metowolf/MetingJS@1.2/dist/Meting.min.js', + local: '/js/lib/aplayer/Meting.min.js' + }, + prismjs_js: { + cdn: 'https://cdn.jsdelivr.net/npm/prismjs@1/prism.min.js', + local: '/js/lib/prismjs/prism.min.js' + }, + prismjs_lineNumber_js: { + cdn: 'https://cdn.jsdelivr.net/npm/prismjs@1/plugins/line-numbers/prism-line-numbers.min.js', + local: '/js/lib/prismjs/prism-line-numbers.min.js' + }, + prismjs_autoloader: { + cdn: 'https://cdn.jsdelivr.net/npm/prismjs@1/plugins/autoloader/prism-autoloader.min.js', + local: '/js/lib/prismjs/prism-autoloader.min.js' + } } // delete null value const deleteNullValue = obj => { + if (!obj) return for (const i in obj) { obj[i] === null && delete obj[i] } return obj } - themeConfig.CDN = Object.assign(defaultCDN, deleteNullValue(themeConfig.CDN)) + const defaultVal = (obj, choose) => { + const str = choose === 'local' ? 'local' : 'cdn' + + for (const i in obj) { + obj[i] = obj[i][str] + } + return obj + } + + themeConfig.asset = Object.assign(defaultVal(internalData, CDN.internal_provider), + defaultVal(data, CDN.third_party_provider), deleteNullValue(CDN.option)) /** * Capitalize the first letter of comment name */ - let { use } = themeConfig.comments + let { use } = comments if (!use) return