|
7 | 7 | * <%- iconcdn() %> |
8 | 8 | */ |
9 | 9 | 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 }" |
13 | 14 | }; |
14 | 15 |
|
15 | 16 | const font_providers = { |
16 | | - google: 'https://fonts.googleapis.com/${ type }?family=${ fontname }' |
| 17 | + google: "https://fonts.googleapis.com/${ type }?family=${ fontname }" |
17 | 18 | }; |
18 | 19 |
|
19 | 20 | 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" |
21 | 23 | }; |
22 | 24 |
|
23 | 25 | 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 | + }); |
63 | 74 |
|
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 | + }); |
72 | 86 |
|
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 | +}; |
0 commit comments