breaking changes: cdn 可一鍵設置 本地文件/可單獨配置主題文件,第三方文件的 cdn

breaking changes: 移除 utterances,giscus, addtoany, busuanzi 的 cdn 配置
pull/803/head
Jerry 3 years ago
parent c1ac4a5e16
commit ab6672429f

@ -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:
# 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:

@ -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')

@ -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})

@ -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},

@ -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))
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))

@ -28,7 +28,7 @@ script.
if (typeof twikoo === 'object') {
runTwikoo()
} else {
getScript('!{theme.CDN.twikoo}').then(runTwikoo)
getScript('!{theme.asset.twikoo}').then(runTwikoo)
}
}

@ -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)

@ -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)

@ -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
}
}

@ -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}',

@ -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)
}
}

@ -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}) {

@ -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}'

@ -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}) {

@ -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}) {

@ -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

@ -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 => {

@ -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)

@ -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)

@ -43,7 +43,7 @@ script.
if (typeof twikoo === 'object') {
runTwikoo()
} else {
getScript('!{theme.CDN.twikoo}').then(runTwikoo)
getScript('!{theme.asset.twikoo}').then(runTwikoo)
}
}

@ -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) => {

@ -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 = () => {

@ -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()
})

@ -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)}

@ -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))

@ -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')

@ -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)
link(rel='stylesheet' href=url_for(theme.asset.sharejs_css) media="print" onload="this.media='all'")
script(src=url_for(theme.asset.sharejs) defer)

@ -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()

@ -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": {

@ -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

Loading…
Cancel
Save