mirror of
https://gitee.com/docsifyjs/docsify.git
synced 2024-11-29 18:48:14 +08:00
4ae87bb18b
* Update JS build - Change rollup build from API to config file - Change output dir from lib to dist - Update lib to dist path in related files - Update dependencies - Add banner comment to bundles - Add unminified plugin bundles * Update docs with v5 version lock and dist path * Update docs to reference minified themes * Clean up docs * Update CSS build - Change CSS build from API to CLI - Change output dir from lib to dist - Update lib to dist path in related files - Update dependencies - Add sourcemaps * Update dependencies * Clean up package.json and add keywords * Fix rimraf globs on Windows * Fix PostCSS CLI glob on Windows * Update test-related dependencies * Update emoji * Add engines prop to package.json
54 lines
1.7 KiB
JavaScript
54 lines
1.7 KiB
JavaScript
// Exports
|
|
// =============================================================================
|
|
export const config = {
|
|
matcher: ['/preview/(index.html)?'],
|
|
};
|
|
|
|
// Rewrite rules shared with local server configurations
|
|
export const rewriteRules = [
|
|
// Replace CDN URLs with local paths
|
|
{
|
|
match: /https?.*\/CHANGELOG.md/g,
|
|
replace: '/CHANGELOG.md',
|
|
},
|
|
{
|
|
// CDN versioned default
|
|
// Ex1: //cdn.com/package-name
|
|
// Ex2: http://cdn.com/package-name@1.0.0
|
|
// Ex3: https://cdn.com/package-name@latest
|
|
match: /(?:https?:)*\/\/.*cdn.*docsify[@\d.latest]*(?=["'])/g,
|
|
replace: '/dist/docsify.min.js',
|
|
},
|
|
{
|
|
// CDN paths to local paths
|
|
// Ex1: //cdn.com/package-name/path/file.js => /path/file.js
|
|
// Ex2: http://cdn.com/package-name@1.0.0/dist/file.js => /dist/file.js
|
|
// Ex3: https://cdn.com/package-name@latest/dist/file.js => /dist/file.js
|
|
match: /(?:https?:)*\/\/.*cdn.*docsify[@\d.latest]*\/(?:dist\/)/g,
|
|
replace: '/dist/',
|
|
},
|
|
];
|
|
|
|
// Serve virtual /preview/index.html
|
|
// Note: See vercel.json for preview routing configuration
|
|
// 1. Fetch index.html from /docs/ directory
|
|
// 2. Replace CDN URLs with local paths (see rewriteRules)
|
|
// 3. Return preview HTML
|
|
export default async function middleware(request) {
|
|
const { origin } = new URL(request.url);
|
|
const indexURL = `${origin}/docs/index.html`;
|
|
const indexHTML = await fetch(indexURL).then(res => res.text());
|
|
const previewHTML = rewriteRules.reduce(
|
|
(html, rule) => html.replace(rule.match, rule.replace),
|
|
indexHTML
|
|
);
|
|
|
|
return new Response(previewHTML, {
|
|
status: 200,
|
|
headers: {
|
|
'content-type': 'text/html',
|
|
'x-robots-tag': 'noindex',
|
|
},
|
|
});
|
|
}
|