From d248a3f9a6223604be023442676d9a1d360206b7 Mon Sep 17 00:00:00 2001
From: Mimi <1119186082@qq.com>
Date: Sun, 2 Aug 2020 11:04:04 +0800
Subject: [PATCH] Refactor vendors (#72)
* Compatibility with `@next-theme/plugins`
* Update test cases
---
.gitattributes | 1 -
.gitignore | 5 -
_config.yml | 70 ++--------
_vendors.yml | 132 ++++++++++++++++++
layout/_partials/head/head.njk | 15 +-
layout/_scripts/vendors.njk | 7 +-
layout/_third-party/comments/disqusjs.njk | 7 +-
layout/_third-party/comments/gitalk.njk | 7 +-
layout/_third-party/comments/valine.njk | 4 +-
layout/_third-party/math/katex.njk | 9 +-
layout/_third-party/math/mathjax.njk | 4 +-
layout/_third-party/quicklink.njk | 3 +-
layout/_third-party/search/algolia-search.njk | 6 +-
layout/_third-party/tags/mermaid.njk | 3 +-
scripts/events/index.js | 4 +-
scripts/events/lib/config.js | 12 --
scripts/events/lib/vendors.js | 37 +++++
scripts/filters/minify.js | 14 --
scripts/helpers/next-vendors.js | 20 ++-
source/lib/animate-css/animate.min.css | 12 --
source/lib/anime.min.js | 8 --
source/lib/font-awesome/css/all.min.css | 5 -
.../font-awesome/webfonts/fa-brands-400.woff2 | Bin 76612 -> 0 bytes
.../webfonts/fa-regular-400.woff2 | Bin 13584 -> 0 bytes
.../font-awesome/webfonts/fa-solid-900.woff2 | Bin 79444 -> 0 bytes
test/validate/index.js | 7 +
26 files changed, 223 insertions(+), 169 deletions(-)
create mode 100644 _vendors.yml
create mode 100644 scripts/events/lib/vendors.js
delete mode 100644 source/lib/animate-css/animate.min.css
delete mode 100644 source/lib/anime.min.js
delete mode 100644 source/lib/font-awesome/css/all.min.css
delete mode 100644 source/lib/font-awesome/webfonts/fa-brands-400.woff2
delete mode 100644 source/lib/font-awesome/webfonts/fa-regular-400.woff2
delete mode 100644 source/lib/font-awesome/webfonts/fa-solid-900.woff2
diff --git a/.gitattributes b/.gitattributes
index 34c7ad6a1..ac1222dce 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1 @@
-source/lib/* linguist-vendored
test/* linguist-vendored
diff --git a/.gitignore b/.gitignore
index 196009de0..67c7cd93c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,8 +8,3 @@ node_modules/
# Ignore optional external libraries
source/lib/*
-
-# Track internal libraries & Ignore unused verdors files
-!source/lib/font-awesome/
-!source/lib/anime.min.js
-!source/lib/animate-css/
diff --git a/_config.yml b/_config.yml
index 91a7b9713..92b964a89 100644
--- a/_config.yml
+++ b/_config.yml
@@ -853,126 +853,86 @@ canvas_ribbon:
#! See: https://theme-next.js.org/docs/advanced-settings
#! ==============================================================
-# Script Vendors. Set a CDN address for the vendor you want to customize.
-# CDN URLs from UNPKG and CDNJS are provided in the comments for selection.
-# If left blank, jsDelivr will be used as the default CDN provider.
-# It's recommended to use the same version as internal ones to avoid potential problems.
-# Remember to use the https protocol of CDN files when you enable https on your site.
+# It's recommended to use the same version as in `_vendors.yml` to avoid potential problems.
+# Remember to use the https protocol of CDN links when you enable https on your site.
vendors:
+ # The CDN provider of NexT internal scripts.
# Available values: local, jsdelivr, unpkg
internal: local
+ # The default CDN provider of third-party plugins.
+ # Available values: local, jsdelivr, unpkg, cdnjs
+ # Dependencies for `plugins: local`: https://github.com/next-theme/plugins
+ plugins: jsdelivr
- # Internal version: 3.1.0
- # anime: //cdn.jsdelivr.net/npm/animejs@3.2.0/lib/anime.min.js
- # anime: //unpkg.com/animejs@3.2.0/lib/anime.min.js
- # anime: //cdnjs.cloudflare.com/ajax/libs/animejs/3.2.0/anime.min.js
+ # In the following settings, you can specify the CDN link for each plugin.
+ # If left blank, the default CDN provider set by `plugins` option will be used.
+
+ # Anime.js
anime:
- # Internal version: 5.13.0
- # fontawesome: //cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5/css/all.min.css
- # fontawesome: //unpkg.com/@fortawesome/fontawesome-free@5/css/all.min.css
- # fontawesome: //cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css
+ # Font Awesome
fontawesome:
# Prism
- # prism: //unpkg.com/prismjs@1/components/prism-core.min.js
- # prism_autoloader: //unpkg.com/prismjs@1/plugins/autoloader/prism-autoloader.min.js
- # prism_line_numbers: //unpkg.com/prismjs@1/plugins/line-numbers/prism-line-numbers.min.js
prism:
prism_autoloader:
prism_line_numbers:
# MathJax
- # mathjax: //unpkg.com/mathjax@3/es5/tex-mml-chtml.js
- # mathjax: //cdnjs.cloudflare.com/ajax/libs/mathjax/3.0.5/es5/tex-mml-chtml.js
mathjax:
# KaTeX
- # katex: //unpkg.com/katex@0/dist/katex.min.css
- # katex: //cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css
- # copy_tex_js: //unpkg.com/katex@0/dist/contrib/copy-tex.min.js
- # copy_tex_css: //unpkg.com/katex@0/dist/contrib/copy-tex.min.css
katex:
copy_tex_js:
copy_tex_css:
- # Recommended version: 0.4.0
- # pjax: //cdn.jsdelivr.net/gh/next-theme/pjax@0/pjax.min.js
+ # Pjax
pjax:
# FancyBox
- # jquery: //unpkg.com/jquery@3/dist/jquery.min.js
- # fancybox: //unpkg.com/@fancyapps/fancybox@3/dist/jquery.fancybox.min.js
- # fancybox_css: //unpkg.com/@fancyapps/fancybox@3/dist/jquery.fancybox.min.css
jquery:
fancybox:
fancybox_css:
# Medium-zoom
- # mediumzoom: //unpkg.com/medium-zoom@1/dist/medium-zoom.min.js
- # mediumzoom: //cdnjs.cloudflare.com/ajax/libs/medium-zoom/1.0.5/medium-zoom.min.js
mediumzoom:
# Lazyload
- # lazyload: //unpkg.com/lozad@1/dist/lozad.min.js
- # lazyload: //cdnjs.cloudflare.com/ajax/libs/lozad.js/1.15.0/lozad.min.js
lazyload:
# Pangu
- # pangu: //unpkg.com/pangu@4/dist/browser/pangu.min.js
- # pangu: //cdnjs.cloudflare.com/ajax/libs/pangu/4.0.7/pangu.min.js
pangu:
# Quicklink
- # quicklink: //unpkg.com/quicklink@2/dist/quicklink.umd.js
- # quicklink: //cdnjs.cloudflare.com/ajax/libs/quicklink/2.0.0/quicklink.umd.js
quicklink:
# DisqusJS
- # disqusjs_js: //unpkg.com/disqusjs@1/dist/disqus.js
- # disqusjs_css: //unpkg.com/disqusjs@1/dist/disqusjs.css
disqusjs_js:
disqusjs_css:
# Valine
- # valine: //unpkg.com/valine@1/dist/Valine.min.js
- # valine: //cdnjs.cloudflare.com/ajax/libs/valine/1.4.14/Valine.min.js
valine:
# Gitalk
- # gitalk_js: //unpkg.com/gitalk@1/dist/gitalk.min.js
- # gitalk_css: //unpkg.com/gitalk@1/dist/gitalk.min.css
gitalk_js:
gitalk_css:
# Algolia Search
- # algolia_search: //unpkg.com/algoliasearch@4/dist/algoliasearch-lite.umd.js
- # instant_search: //unpkg.com/instantsearch.js@4/dist/instantsearch.production.min.js
algolia_search:
instant_search:
# Mermaid
- # mermaid: //unpkg.com/mermaid@8/dist/mermaid.min.js
- # mermaid: //cdnjs.cloudflare.com/ajax/libs/mermaid/8.6.3/mermaid.min.js
mermaid:
- # Internal version: 3.1.1
+ # Animate.css
# Warning: motion won't work with animate.css version 3.2.0 or later
- # animate_css: //cdn.jsdelivr.net/npm/animate.css@3.1.1/animate.min.css
- # animate_css: //unpkg.com/animate.css@3.1.1/animate.min.css
- # animate_css: //cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css
animate_css:
- # Internal version: 1.0.2
- # pace: //unpkg.com/pace-js@1/pace.min.js
- # pace: //cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js
- # pace_css: //unpkg.com/pace-js@1/themes/blue/pace-theme-minimal.css
- # pace_css: //cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/themes/blue/pace-theme-minimal.min.css
+ # Pace.js
pace:
pace_css:
# Canvas ribbon
- # canvas_ribbon: //unpkg.com/ribbon.js@1/dist/ribbon.min.js
canvas_ribbon:
# Assets
diff --git a/_vendors.yml b/_vendors.yml
new file mode 100644
index 000000000..20a774be4
--- /dev/null
+++ b/_vendors.yml
@@ -0,0 +1,132 @@
+anime:
+ name: animejs
+ version: 3.2.0
+ file: lib/anime.min.js
+fontawesome:
+ name: '@fortawesome/fontawesome-free'
+ version: 5.14.0
+ file: css/all.min.css
+ alias: font-awesome
+prism:
+ name: prismjs
+ version: 1.20.0
+ file: components/prism-core.min.js
+ alias: prism
+prism_autoloader:
+ name: prismjs
+ version: 1.20.0
+ file: plugins/autoloader/prism-autoloader.min.js
+ alias: prism
+prism_line_numbers:
+ name: prismjs
+ version: 1.20.0
+ file: plugins/line-numbers/prism-line-numbers.min.js
+ alias: prism
+mathjax:
+ name: mathjax
+ version: 3.0.5
+ file: es5/tex-mml-chtml.js
+katex:
+ name: katex
+ version: 0.11.1
+ file: dist/katex.min.css
+ alias: KaTeX
+copy_tex_js:
+ name: katex
+ version: 0.11.1
+ file: dist/contrib/copy-tex.min.js
+ alias: KaTeX
+copy_tex_css:
+ name: katex
+ version: 0.11.1
+ file: dist/contrib/copy-tex.min.css
+ alias: KaTeX
+pjax:
+ name: '@next-theme/pjax'
+ version: 0.4.0
+ file: pjax.min.js
+ unavailable: [cdnjs]
+jquery:
+ name: jquery
+ version: 3.5.1
+ file: dist/jquery.min.js
+fancybox:
+ name: '@fancyapps/fancybox'
+ version: 3.5.7
+ file: dist/jquery.fancybox.min.js
+ alias: fancybox
+fancybox_css:
+ name: '@fancyapps/fancybox'
+ version: 3.5.7
+ file: dist/jquery.fancybox.min.css
+ alias: fancybox
+mediumzoom:
+ name: medium-zoom
+ version: 1.0.6
+ file: dist/medium-zoom.min.js
+lazyload:
+ name: lozad
+ version: 1.15.0
+ file: dist/lozad.min.js
+ alias: lozad.js
+pangu:
+ name: pangu
+ version: 4.0.7
+ file: dist/browser/pangu.min.js
+quicklink:
+ name: quicklink
+ version: 2.0.0
+ file: dist/quicklink.umd.js
+disqusjs_js:
+ name: disqusjs
+ version: 1.3.0
+ file: dist/disqus.js
+ unavailable: [cdnjs]
+disqusjs_css:
+ name: disqusjs
+ version: 1.3.0
+ file: dist/disqusjs.css
+ unavailable: [cdnjs]
+valine:
+ name: valine
+ version: 1.4.14
+ file: dist/Valine.min.js
+gitalk_js:
+ name: gitalk
+ version: 1.6.2
+ file: dist/gitalk.min.js
+gitalk_css:
+ name: gitalk
+ version: 1.6.2
+ file: dist/gitalk.css
+algolia_search:
+ name: algoliasearch
+ version: 4.3.1
+ file: dist/algoliasearch-lite.umd.js
+instant_search:
+ name: instantsearch.js
+ version: 4.7.0
+ file: dist/instantsearch.production.min.js
+mermaid:
+ name: mermaid
+ version: 8.6.4
+ file: dist/mermaid.min.js
+animate_css:
+ name: animate.css
+ version: 3.1.1
+ file: animate.min.css
+pace:
+ name: pace-js
+ version: 1.0.2
+ file: pace.min.js
+ alias: pace
+pace_css:
+ name: pace-js
+ version: 1.0.2
+ file: themes/blue/pace-theme-minimal.css
+ alias: pace
+canvas_ribbon:
+ name: ribbon.js
+ version: 1.0.2
+ file: dist/ribbon.min.js
+ unavailable: [cdnjs]
diff --git a/layout/_partials/head/head.njk b/layout/_partials/head/head.njk
index 7fd937124..37186b7bb 100644
--- a/layout/_partials/head/head.njk
+++ b/layout/_partials/head/head.njk
@@ -43,24 +43,19 @@
{{ next_font() }}
-{%- 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 '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 5bcdd90be..482d93ade 100644
--- a/layout/_scripts/vendors.njk
+++ b/layout/_scripts/vendors.njk
@@ -1,8 +1,7 @@
{%- 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() %}
-
+{%- for name in js_vendors() %}
+
{%- endfor %}
diff --git a/layout/_third-party/comments/disqusjs.njk b/layout/_third-party/comments/disqusjs.njk
index 6e529313b..c746cc9c3 100644
--- a/layout/_third-party/comments/disqusjs.njk
+++ b/layout/_third-party/comments/disqusjs.njk
@@ -1,12 +1,9 @@
{%- 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 f103868c4..e83419817 100644
--- a/layout/_third-party/math/mathjax.njk
+++ b/layout/_third-party/math/mathjax.njk
@@ -1,5 +1,3 @@
-{%- set mathjax_uri = theme.vendors.mathjax or '//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js' %}
-
+
-
+
+
{{- next_js('algolia-search.js') }}
diff --git a/layout/_third-party/tags/mermaid.njk b/layout/_third-party/tags/mermaid.njk
index d551ed8e8..004b7f8f5 100644
--- a/layout/_third-party/tags/mermaid.njk
+++ b/layout/_third-party/tags/mermaid.njk
@@ -1,8 +1,7 @@
{%- if theme.mermaid.enable %}
-{%- set mermaid_uri = theme.vendors.mermaid or '//cdn.jsdelivr.net/npm/mermaid@8/dist/mermaid.min.js' %}