Skip to content

Commit

Permalink
Refactor vendors (#72)
Browse files Browse the repository at this point in the history
* Compatibility with `@next-theme/plugins`

* Update test cases
  • Loading branch information
stevenjoezhang committed Aug 2, 2020
1 parent 04da779 commit d248a3f
Show file tree
Hide file tree
Showing 26 changed files with 223 additions and 169 deletions.
1 change: 0 additions & 1 deletion .gitattributes
@@ -1,2 +1 @@
source/lib/* linguist-vendored
test/* linguist-vendored
5 changes: 0 additions & 5 deletions .gitignore
Expand Up @@ -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/
70 changes: 15 additions & 55 deletions _config.yml
Expand Up @@ -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
Expand Down
132 changes: 132 additions & 0 deletions _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]
15 changes: 5 additions & 10 deletions layout/_partials/head/head.njk
Expand Up @@ -43,24 +43,19 @@

{{ next_font() }}

{%- set font_awesome_uri = theme.vendors.fontawesome or 'lib/font-awesome/css/all.min.css' %}
<link rel="stylesheet" href="{{ url_for(font_awesome_uri) }}">
<link rel="stylesheet" href="{{ theme.vendors.fontawesome }}">

{%-if theme.motion.enable %}
{% set animate_css_uri = theme.vendors.animate_css or 'lib/animate-css/animate.min.css' %}
<link rel="stylesheet" href="{{ url_for(animate_css_uri) }}">
<link rel="stylesheet" href="{{ theme.vendors.animate_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' %}
<link rel="stylesheet" href="{{ url_for(fancybox_css_uri) }}">
<link rel="stylesheet" href="{{ theme.vendors.fancybox_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' %}
<link rel="stylesheet" href="{{ url_for(pace_css_uri) }}">
<script src="{{ url_for(pace_js_uri) }}"></script>
<link rel="stylesheet" href="{{ theme.vendors.pace_css }}">
<script src="{{ theme.vendors.pace }}"></script>
{%- endif %}

{{ next_config() }}
7 changes: 3 additions & 4 deletions 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' %}
<script size="{{ theme.canvas_ribbon.size }}" alpha="{{ theme.canvas_ribbon.alpha }}" zIndex="{{ theme.canvas_ribbon.zIndex }}" src="{{ url_for(canvas_ribbon_uri) }}"></script>
<script size="{{ theme.canvas_ribbon.size }}" alpha="{{ theme.canvas_ribbon.alpha }}" zIndex="{{ theme.canvas_ribbon.zIndex }}" src="{{ theme.vendors.canvas_ribbon }}"></script>
{%- endif %}

{%- for name, internal in js_vendors() %}
<script src="{{ url_for(theme.vendors[name] or internal) }}"></script>
{%- for name in js_vendors() %}
<script src="{{ url_for(theme.vendors[name]) }}"></script>
{%- endfor %}
7 changes: 2 additions & 5 deletions 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' %}
<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' %}
<link rel="stylesheet" href="{{ theme.vendors.disqusjs_css }}">

<script>
NexT.utils.loadComments('#disqus_thread', () => {
NexT.utils.getScript('{{ url_for(disqusjs_js_uri) }}', () => {
NexT.utils.getScript('{{ theme.vendors.disqusjs_js }}', () => {
window.dsqjs = new DisqusJS({
api : '{{ theme.disqusjs.api }}' || 'https://disqus.com/api/',
apikey : '{{ theme.disqusjs.apikey }}',
Expand Down
7 changes: 2 additions & 5 deletions layout/_third-party/comments/gitalk.njk
@@ -1,12 +1,9 @@
{%- 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="{{ url_for(gitalk_css_uri) }}">

{%- set gitalk_js_uri = theme.vendors.gitalk_js or '//cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js' %}
<link rel="stylesheet" href="{{ theme.vendors.gitalk_css }}">

<script>
NexT.utils.loadComments('#gitalk-container', () => {
NexT.utils.getScript('{{ url_for(gitalk_js_uri) }}', () => {
NexT.utils.getScript('{{ theme.vendors.gitalk_js }}', () => {
var gitalk = new Gitalk({
clientID : '{{ theme.gitalk.client_id }}',
clientSecret: '{{ theme.gitalk.client_secret }}',
Expand Down
4 changes: 1 addition & 3 deletions layout/_third-party/comments/valine.njk
@@ -1,8 +1,6 @@
{%- set valine_uri = theme.vendors.valine or '//cdn.jsdelivr.net/npm/valine@1/dist/Valine.min.js' %}

<script>
NexT.utils.loadComments('#valine-comments', () => {
NexT.utils.getScript('{{ url_for(valine_uri) }}', () => {
NexT.utils.getScript('{{ theme.vendors.valine }}', () => {
new Valine(Object.assign({
el : '#valine-comments',
path: location.pathname,
Expand Down
9 changes: 3 additions & 6 deletions layout/_third-party/math/katex.njk
@@ -1,8 +1,5 @@
{%- set katex_uri = theme.vendors.katex or '//cdn.jsdelivr.net/npm/katex@0/dist/katex.min.css' %}
<link rel="stylesheet" href="{{ url_for(katex_uri) }}">
<link rel="stylesheet" href="{{ theme.vendors.katex }}">
{%- 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="{{ url_for(copy_tex_js_uri) }}"></script>
<link rel="stylesheet" href="{{ url_for(copy_tex_css_uri) }}">
<script src="{{ theme.vendors.copy_tex_js }}"></script>
<link rel="stylesheet" href="{{ theme.vendors.copy_tex_css }}">
{%- endif %}
4 changes: 1 addition & 3 deletions 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' %}

<script>
if (typeof MathJax === 'undefined') {
window.MathJax = {
Expand Down Expand Up @@ -39,7 +37,7 @@
};
(function () {
const script = document.createElement('script');
script.src = '{{ url_for(mathjax_uri) }}';
script.src = '{{ theme.vendors.mathjax }}';
script.defer = true;
document.head.appendChild(script);
})();
Expand Down

0 comments on commit d248a3f

Please sign in to comment.