Skip to content

Commit 512caa5

Browse files
committed
[migrate] replace JSDelivr CDN with WebCache
1 parent 781a0d3 commit 512caa5

File tree

4 files changed

+91
-75
lines changed

4 files changed

+91
-75
lines changed

themes/Icarus/includes/helpers/cdn.js

Lines changed: 80 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -7,78 +7,94 @@
77
* <%- iconcdn() %>
88
*/
99
const cdn_providers = {
10-
cdnjs: 'https://cdnjs.cloudflare.com/ajax/libs/${ package }/${ version }/${ filename }',
11-
jsdelivr: 'https://cdn.jsdelivr.net/npm/${ package }@${ version }/${ filename }',
12-
unpkg: 'https://unpkg.com/${ package }@${ version }/${ filename }'
10+
cdnjs:
11+
"https://cdnjs.cloudflare.com/ajax/libs/${ package }/${ version }/${ filename }",
12+
jsdelivr: "https://npm.webcache.cn/${ package }@${ version }/${ filename }",
13+
unpkg: "https://unpkg.com/${ package }@${ version }/${ filename }"
1314
};
1415

1516
const font_providers = {
16-
google: 'https://fonts.googleapis.com/${ type }?family=${ fontname }'
17+
google: "https://fonts.googleapis.com/${ type }?family=${ fontname }"
1718
};
1819

1920
const icon_providers = {
20-
fontawesome: 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.1/css/all.min.css'
21+
fontawesome:
22+
"https://npm.webcache.cn/@fortawesome/fontawesome-free@5.15.1/css/all.min.css"
2123
};
2224

2325
module.exports = function (hexo) {
24-
hexo.extend.helper.register('cdn', function (_package, version, filename) {
25-
let provider = hexo.extend.helper.get('get_config').bind(this)('providers.cdn');
26-
// cdn.js does not follow a GitHub npm style like jsdeliver and unpkg do. Patch it!
27-
if (provider === 'cdnjs' || provider.startsWith('[cdnjs]')) {
28-
if (provider.startsWith('[cdnjs]')) {
29-
provider = provider.substr(7);
30-
}
31-
if (filename.startsWith('dist/')) {
32-
filename = filename.substr(5);
33-
}
34-
if (_package === 'moment') {
35-
_package = 'moment.js';
36-
filename = filename.startsWith('min/') ? filename.substr(4) : filename;
37-
}
38-
if (_package === 'outdatedbrowser') {
39-
_package = 'outdated-browser';
40-
filename = filename.startsWith('outdatedbrowser/') ? filename.substr(16) : filename;
41-
}
42-
if (_package === 'highlight.js') {
43-
filename = filename.endsWith('.css') && filename.indexOf('.min.') === -1 ?
44-
filename.substr(0, filename.length - 4) + '.min.css' : filename;
45-
}
46-
if (_package === 'mathjax') {
47-
filename = filename.startsWith('unpacked/') ? filename.substr(9) : filename;
48-
}
49-
if (_package === 'pace-js') {
50-
_package = 'pace';
51-
}
52-
if (_package === 'clipboard') {
53-
_package = 'clipboard.js';
54-
}
55-
}
56-
if (provider !== null && cdn_providers.hasOwnProperty(provider)) {
57-
provider = cdn_providers[provider];
58-
}
59-
return provider.replace(/\${\s*package\s*}/gi, _package)
60-
.replace(/\${\s*version\s*}/gi, version)
61-
.replace(/\${\s*filename\s*}/gi, filename);
62-
});
26+
hexo.extend.helper.register("cdn", function (_package, version, filename) {
27+
let provider = hexo.extend.helper.get("get_config").bind(this)(
28+
"providers.cdn"
29+
);
30+
// cdn.js does not follow a GitHub npm style like jsdeliver and unpkg do. Patch it!
31+
if (provider === "cdnjs" || provider.startsWith("[cdnjs]")) {
32+
if (provider.startsWith("[cdnjs]")) {
33+
provider = provider.substr(7);
34+
}
35+
if (filename.startsWith("dist/")) {
36+
filename = filename.substr(5);
37+
}
38+
if (_package === "moment") {
39+
_package = "moment.js";
40+
filename = filename.startsWith("min/") ? filename.substr(4) : filename;
41+
}
42+
if (_package === "outdatedbrowser") {
43+
_package = "outdated-browser";
44+
filename = filename.startsWith("outdatedbrowser/")
45+
? filename.substr(16)
46+
: filename;
47+
}
48+
if (_package === "highlight.js") {
49+
filename =
50+
filename.endsWith(".css") && filename.indexOf(".min.") === -1
51+
? filename.substr(0, filename.length - 4) + ".min.css"
52+
: filename;
53+
}
54+
if (_package === "mathjax") {
55+
filename = filename.startsWith("unpacked/")
56+
? filename.substr(9)
57+
: filename;
58+
}
59+
if (_package === "pace-js") {
60+
_package = "pace";
61+
}
62+
if (_package === "clipboard") {
63+
_package = "clipboard.js";
64+
}
65+
}
66+
if (provider !== null && cdn_providers.hasOwnProperty(provider)) {
67+
provider = cdn_providers[provider];
68+
}
69+
return provider
70+
.replace(/\${\s*package\s*}/gi, _package)
71+
.replace(/\${\s*version\s*}/gi, version)
72+
.replace(/\${\s*filename\s*}/gi, filename);
73+
});
6374

64-
hexo.extend.helper.register('fontcdn', function (fontName, type = 'css') {
65-
let provider = hexo.extend.helper.get('get_config').bind(this)('providers.fontcdn');
66-
if (provider !== null && font_providers.hasOwnProperty(provider)) {
67-
provider = font_providers[provider];
68-
}
69-
return provider.replace(/\${\s*fontname\s*}/gi, fontName)
70-
.replace(/\${\s*type\s*}/gi, type);
71-
});
75+
hexo.extend.helper.register("fontcdn", function (fontName, type = "css") {
76+
let provider = hexo.extend.helper.get("get_config").bind(this)(
77+
"providers.fontcdn"
78+
);
79+
if (provider !== null && font_providers.hasOwnProperty(provider)) {
80+
provider = font_providers[provider];
81+
}
82+
return provider
83+
.replace(/\${\s*fontname\s*}/gi, fontName)
84+
.replace(/\${\s*type\s*}/gi, type);
85+
});
7286

73-
hexo.extend.helper.register('iconcdn', function (provider = null) {
74-
if (provider !== null && icon_providers.hasOwnProperty(provider)) {
75-
provider = icon_providers[provider];
76-
} else {
77-
provider = hexo.extend.helper.get('get_config').bind(this)('providers.iconcdn');
78-
if (provider !== null && icon_providers.hasOwnProperty(provider)) {
79-
provider = icon_providers[provider];
80-
}
81-
}
82-
return provider;
83-
});
84-
}
87+
hexo.extend.helper.register("iconcdn", function (provider = null) {
88+
if (provider !== null && icon_providers.hasOwnProperty(provider)) {
89+
provider = icon_providers[provider];
90+
} else {
91+
provider = hexo.extend.helper.get("get_config").bind(this)(
92+
"providers.iconcdn"
93+
);
94+
if (provider !== null && icon_providers.hasOwnProperty(provider)) {
95+
provider = icon_providers[provider];
96+
}
97+
}
98+
return provider;
99+
});
100+
};

themes/Icarus/layout/widget/calendar.ejs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fullcalendar/dist/fullcalendar.min.css">
2-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/css/bootstrap.min.css">
3-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.9.0/css/all.min.css">
1+
<link rel="stylesheet" href="https://npm.webcache.cn/fullcalendar/dist/fullcalendar.min.css">
2+
<link rel="stylesheet" href="https://npm.webcache.cn/bootstrap@4.3.1/dist/css/bootstrap.min.css">
3+
<link rel="stylesheet" href="https://npm.webcache.cn/@fortawesome/fontawesome-free@5.9.0/css/all.min.css">
44
<style>
55
.fc-bg, .fc-content-skeleton thead {
66
color: transparent;
77
}
88
</style>
9-
<script src="https://cdn.jsdelivr.net/npm/fullcalendar/dist/fullcalendar.min.js"></script>
10-
<script src="https://cdn.jsdelivr.net/npm/fullcalendar/dist/locale/zh-cn.js"></script>
11-
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.3.1/dist/js/bootstrap.bundle.min.js"></script>
12-
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.15.0/dist/umd/popper.min.js"></script>
9+
<script src="https://npm.webcache.cn/fullcalendar/dist/fullcalendar.min.js"></script>
10+
<script src="https://npm.webcache.cn/fullcalendar/dist/locale/zh-cn.js"></script>
11+
<script src="https://npm.webcache.cn/bootstrap@4.3.1/dist/js/bootstrap.bundle.min.js"></script>
12+
<script src="https://npm.webcache.cn/popper.js@1.15.0/dist/umd/popper.min.js"></script>
1313

1414
<div id="Calendar"></div>
1515

themes/Icarus/layout/widget/marker_map.ejs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
<script src="https://cdn.jsdelivr.net/npm/@babel/polyfill/dist/polyfill.min.js"></script>
1+
<script src="https://npm.webcache.cn/@babel/polyfill/dist/polyfill.min.js"></script>
22
<script src="https://polyfill.io/v3/polyfill.min.js?features=Promise%2CIntersectionObserver"></script>
33

4-
<script src="https://cdn.jsdelivr.net/npm/dom-renderer"></script>
5-
<script src="https://cdn.jsdelivr.net/npm/web-cell@1.2.3"></script>
4+
<script src="https://npm.webcache.cn/dom-renderer"></script>
5+
<script src="https://npm.webcache.cn/web-cell@1.2.3"></script>
66
<script src="//webapi.amap.com/maps?v=1.4.15&key=<%= config.amap.key %>&plugin=AMap.Geocoder,AMap.AdvancedInfoWindow"></script>
77

88
<template><%= JSON.stringify( markers ) %></template>

0 commit comments

Comments
 (0)