From cb05848d11c71ee51fb2bbf743c227659556d5b1 Mon Sep 17 00:00:00 2001 From: Mimi <1119186082@qq.com> Date: Mon, 13 Jul 2020 17:43:19 +0800 Subject: [PATCH] New plugin `@next-theme/plugins` --- layout/_partials/head/head.njk | 14 +++++++------- layout/_scripts/vendors.njk | 5 ++--- layout/_third-party/comments/disqusjs.njk | 4 ++-- layout/_third-party/comments/gitalk.njk | 4 ++-- layout/_third-party/comments/valine.njk | 2 +- layout/_third-party/math/katex.njk | 6 +++--- layout/_third-party/math/mathjax.njk | 2 +- layout/_third-party/quicklink.njk | 2 +- layout/_third-party/search/algolia-search.njk | 4 ++-- layout/_third-party/tags/mermaid.njk | 2 +- scripts/events/lib/config.js | 12 ++++++++++++ 11 files changed, 34 insertions(+), 23 deletions(-) diff --git a/layout/_partials/head/head.njk b/layout/_partials/head/head.njk index 7c0bc9c..7fd9371 100644 --- a/layout/_partials/head/head.njk +++ b/layout/_partials/head/head.njk @@ -43,24 +43,24 @@ {{ next_font() }} -{%- set font_awesome_uri = theme.vendors.fontawesome or url_for('lib/font-awesome/css/all.min.css') %} - +{%- set font_awesome_uri = theme.vendors.fontawesome or 'lib/font-awesome/css/all.min.css' %} + {%-if theme.motion.enable %} - {% set animate_css_uri = theme.vendors.animate_css or url_for('lib/animate-css/animate.min.css') %} - + {% set animate_css_uri = theme.vendors.animate_css or 'lib/animate-css/animate.min.css' %} + {%- endif %} {%- if theme.fancybox %} {%- set fancybox_css_uri = theme.vendors.fancybox_css or '//cdn.jsdelivr.net/npm/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css' %} - + {%- endif %} {%- if theme.pace.enable %} {%- set pace_css_uri = theme.vendors.pace_css or '//cdn.jsdelivr.net/npm/pace-js@1/themes/blue/pace-theme-' + theme.pace.theme + '.min.css' %} {%- set pace_js_uri = theme.vendors.pace or '//cdn.jsdelivr.net/npm/pace-js@1/pace.min.js' %} - - + + {%- endif %} {{ next_config() }} diff --git a/layout/_scripts/vendors.njk b/layout/_scripts/vendors.njk index abef86b..5bcdd90 100644 --- a/layout/_scripts/vendors.njk +++ b/layout/_scripts/vendors.njk @@ -1,9 +1,8 @@ {%- if theme.canvas_ribbon.enable %} {%- set canvas_ribbon_uri = theme.vendors.canvas_ribbon or '//cdn.jsdelivr.net/npm/ribbon.js@1/dist/ribbon.min.js' %} - + {%- endif %} {%- for name, internal in js_vendors() %} - {%- set internal_script = url_for(internal) %} - + {%- endfor %} diff --git a/layout/_third-party/comments/disqusjs.njk b/layout/_third-party/comments/disqusjs.njk index 795aca6..78a6ddb 100644 --- a/layout/_third-party/comments/disqusjs.njk +++ b/layout/_third-party/comments/disqusjs.njk @@ -1,12 +1,12 @@ {%- if page.comments %} {%- set disqusjs_css_uri = theme.vendors.disqusjs_css or '//cdn.jsdelivr.net/npm/disqusjs@1/dist/disqusjs.css' %} - + {%- set disqusjs_js_uri = theme.vendors.disqusjs_js or '//cdn.jsdelivr.net/npm/disqusjs@1/dist/disqus.js' %} - + + {%- endif %} diff --git a/layout/_third-party/math/mathjax.njk b/layout/_third-party/math/mathjax.njk index 6125741..26d0220 100644 --- a/layout/_third-party/math/mathjax.njk +++ b/layout/_third-party/math/mathjax.njk @@ -39,7 +39,7 @@ }; (function () { var script = document.createElement('script'); - script.src = '{{ mathjax_uri }}'; + script.src = '{{ url_for(mathjax_uri) }}'; script.defer = true; document.head.appendChild(script); })(); diff --git a/layout/_third-party/quicklink.njk b/layout/_third-party/quicklink.njk index 53c02cc..d907cb9 100644 --- a/layout/_third-party/quicklink.njk +++ b/layout/_third-party/quicklink.njk @@ -1,6 +1,6 @@ {%- if page.quicklink.enable %} {%- set quicklink_uri = theme.vendors.quicklink or '//cdn.jsdelivr.net/npm/quicklink@2/dist/quicklink.umd.js' %} - + - + + {{- next_js('algolia-search.js') }} diff --git a/layout/_third-party/tags/mermaid.njk b/layout/_third-party/tags/mermaid.njk index bb9addb..9f59dc4 100644 --- a/layout/_third-party/tags/mermaid.njk +++ b/layout/_third-party/tags/mermaid.njk @@ -2,7 +2,7 @@ {%- set mermaid_uri = theme.vendors.mermaid or '//cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js' %} if (document.querySelectorAll('pre.mermaid').length) { - NexT.utils.getScript('{{ mermaid_uri }}', () => { + NexT.utils.getScript('{{ url_for(mermaid_uri) }}', () => { mermaid.initialize({ theme : '{{ theme.mermaid.theme }}', logLevel : 3, diff --git a/scripts/events/lib/config.js b/scripts/events/lib/config.js index f533ef5..f47d512 100644 --- a/scripts/events/lib/config.js +++ b/scripts/events/lib/config.js @@ -1,6 +1,11 @@ 'use strict'; const merge = require('hexo-util').deepMerge || require('lodash/merge'); +let plugins; +try { + plugins = require('@next-theme/plugins'); +} catch (error) { +} module.exports = hexo => { let data = hexo.locals.get('data'); @@ -20,6 +25,13 @@ module.exports = hexo => { hexo.log.warn('Since caching is turned on, the `relative_link` option in Hexo `_config.yml` is set to `false` to avoid potential hazards.'); hexo.config.relative_link = false; } + if (typeof plugins === 'function') { + const { vendors, generator } = plugins(); + Object.keys(vendors).forEach(key => { + hexo.theme.config.vendors[key] = hexo.theme.config.vendors[key] || vendors[key]; + }); + hexo.extend.generator.register('next_vendors', () => generator); + } hexo.config.meta_generator = false; // Custom languages support. Introduced in NexT v6.3.0.