New plugin @next-theme/plugins

This commit is contained in:
Mimi 2020-07-13 17:43:19 +08:00
parent 78da9ab590
commit cb05848d11
11 changed files with 34 additions and 23 deletions

View File

@ -43,24 +43,24 @@
{{ next_font() }}
{%- set font_awesome_uri = theme.vendors.fontawesome or url_for('lib/font-awesome/css/all.min.css') %}
<link rel="stylesheet" href="{{ font_awesome_uri }}">
{%- set font_awesome_uri = theme.vendors.fontawesome or 'lib/font-awesome/css/all.min.css' %}
<link rel="stylesheet" href="{{ url_for(font_awesome_uri) }}">
{%-if theme.motion.enable %}
{% set animate_css_uri = theme.vendors.animate_css or url_for('lib/animate-css/animate.min.css') %}
<link rel="stylesheet" href="{{ animate_css_uri }}">
{% set animate_css_uri = theme.vendors.animate_css or 'lib/animate-css/animate.min.css' %}
<link rel="stylesheet" href="{{ url_for(animate_css_uri) }}">
{%- 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' %}
<link rel="stylesheet" href="{{ fancybox_css_uri }}">
<link rel="stylesheet" href="{{ url_for(fancybox_css_uri) }}">
{%- 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' %}
<link rel="stylesheet" href="{{ pace_css_uri }}">
<script src="{{ pace_js_uri }}"></script>
<link rel="stylesheet" href="{{ url_for(pace_css_uri) }}">
<script src="{{ url_for(pace_js_uri) }}"></script>
{%- endif %}
{{ next_config() }}

View File

@ -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' %}
<script size="{{ theme.canvas_ribbon.size }}" alpha="{{ theme.canvas_ribbon.alpha }}" zIndex="{{ theme.canvas_ribbon.zIndex }}" src="{{ canvas_ribbon_uri }}"></script>
<script size="{{ theme.canvas_ribbon.size }}" alpha="{{ theme.canvas_ribbon.alpha }}" zIndex="{{ theme.canvas_ribbon.zIndex }}" src="{{ url_for(canvas_ribbon_uri) }}"></script>
{%- endif %}
{%- for name, internal in js_vendors() %}
{%- set internal_script = url_for(internal) %}
<script src="{{ theme.vendors[name] or internal_script }}"></script>
<script src="{{ url_for(theme.vendors[name] or internal) }}"></script>
{%- endfor %}

View File

@ -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' %}
<link rel="stylesheet" href="{{ disqusjs_css_uri }}">
<link rel="stylesheet" href="{{ url_for(disqusjs_css_uri) }}">
{%- set disqusjs_js_uri = theme.vendors.disqusjs_js or '//cdn.jsdelivr.net/npm/disqusjs@1/dist/disqus.js' %}
<script>
NexT.utils.loadComments(document.querySelector('#disqus_thread'), () => {
NexT.utils.getScript('{{ disqusjs_js_uri }}', () => {
NexT.utils.getScript('{{ url_for(disqusjs_js_uri) }}', () => {
window.dsqjs = new DisqusJS({
api : '{{ theme.disqusjs.api }}' || 'https://disqus.com/api/',
apikey : '{{ theme.disqusjs.apikey }}',

View File

@ -1,12 +1,12 @@
{%- if page.comments %}
{%- set gitalk_css_uri = theme.vendors.gitalk_css or '//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.css' %}
<link rel="stylesheet" href="{{ gitalk_css_uri }}">
<link rel="stylesheet" href="{{ url_for(gitalk_css_uri) }}">
{%- set gitalk_js_uri = theme.vendors.gitalk_js or '//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js' %}
<script>
NexT.utils.loadComments(document.querySelector('#gitalk-container'), () => {
NexT.utils.getScript('{{ gitalk_js_uri }}', () => {
NexT.utils.getScript('{{ url_for(gitalk_js_uri) }}', () => {
var gitalk = new Gitalk({
clientID : '{{ theme.gitalk.client_id }}',
clientSecret: '{{ theme.gitalk.client_secret }}',

View File

@ -2,7 +2,7 @@
<script>
NexT.utils.loadComments(document.querySelector('#valine-comments'), () => {
NexT.utils.getScript('{{ valine_uri }}', () => {
NexT.utils.getScript('{{ url_for(valine_uri) }}', () => {
new Valine(Object.assign({
el : '#valine-comments',
path: location.pathname,

View File

@ -1,8 +1,8 @@
{%- set katex_uri = theme.vendors.katex or '//cdn.jsdelivr.net/npm/katex@0/dist/katex.min.css' %}
<link rel="stylesheet" href="{{ katex_uri }}">
<link rel="stylesheet" href="{{ url_for(katex_uri) }}">
{%- if theme.math.katex.copy_tex %}
{%- set copy_tex_js_uri = theme.vendors.copy_tex_js or '//cdn.jsdelivr.net/npm/katex@0/dist/contrib/copy-tex.min.js' %}
{%- set copy_tex_css_uri = theme.vendors.copy_tex_css or '//cdn.jsdelivr.net/npm/katex@0/dist/contrib/copy-tex.min.css' %}
<script src="{{ copy_tex_js_uri }}"></script>
<link rel="stylesheet" href="{{ copy_tex_css_uri }}">
<script src="{{ url_for(copy_tex_js_uri) }}"></script>
<link rel="stylesheet" href="{{ url_for(copy_tex_css_uri) }}">
{%- endif %}

View File

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

View File

@ -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' %}
<script src="{{ quicklink_uri }}"></script>
<script src="{{ url_for(quicklink_uri) }}"></script>
<script>
{%- if page.quicklink.delay %}
window.addEventListener('load', () => {

View File

@ -1,6 +1,6 @@
{%- set algolia_search_uri = theme.vendors.algolia_search or '//cdn.jsdelivr.net/npm/algoliasearch@4/dist/algoliasearch-lite.umd.js' %}
{%- set instant_search_uri = theme.vendors.instant_search or '//cdn.jsdelivr.net/npm/instantsearch.js@4/dist/instantsearch.production.min.js' %}
<script src="{{ algolia_search_uri }}"></script>
<script src="{{ instant_search_uri }}"></script>
<script src="{{ url_for(algolia_search_uri) }}"></script>
<script src="{{ url_for(instant_search_uri) }}"></script>
{{- next_js('algolia-search.js') }}

View File

@ -2,7 +2,7 @@
{%- set mermaid_uri = theme.vendors.mermaid or '//cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js' %}
<script{{ pjax }}>
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,

View File

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