mirror of
https://github.com/rustdesk/doc.rustdesk.com.git
synced 2026-07-19 21:25:18 +00:00
71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
import type { AstroIntegration } from 'astro';
|
|
|
|
import configBuilder, { type Config } from './utils/configBuilder';
|
|
import loadConfig from './utils/loadConfig';
|
|
|
|
export default ({ config: _themeConfig = 'src/config.yaml' } = {}): AstroIntegration => {
|
|
return {
|
|
name: 'astrowind-integration',
|
|
|
|
hooks: {
|
|
'astro:config:setup': async ({
|
|
// command,
|
|
config,
|
|
// injectRoute,
|
|
// isRestart,
|
|
logger,
|
|
updateConfig,
|
|
addWatchFile,
|
|
}) => {
|
|
const buildLogger = logger.fork('astrowind');
|
|
|
|
const virtualModuleId = 'astrowind:config';
|
|
const resolvedVirtualModuleId = '\0' + virtualModuleId;
|
|
|
|
const rawJsonConfig = (await loadConfig(_themeConfig)) as Config;
|
|
const { SITE, I18N, METADATA, APP_BLOG, UI, ANALYTICS } = configBuilder(rawJsonConfig);
|
|
|
|
updateConfig({
|
|
site: SITE.site,
|
|
base: SITE.base,
|
|
|
|
trailingSlash: SITE.trailingSlash ? 'always' : 'never',
|
|
|
|
vite: {
|
|
plugins: [
|
|
{
|
|
name: 'vite-plugin-astrowind-config',
|
|
resolveId(id) {
|
|
if (id === virtualModuleId) {
|
|
return resolvedVirtualModuleId;
|
|
}
|
|
},
|
|
load(id) {
|
|
if (id === resolvedVirtualModuleId) {
|
|
return `
|
|
export const SITE = ${JSON.stringify(SITE)};
|
|
export const I18N = ${JSON.stringify(I18N)};
|
|
export const METADATA = ${JSON.stringify(METADATA)};
|
|
export const APP_BLOG = ${JSON.stringify(APP_BLOG)};
|
|
export const UI = ${JSON.stringify(UI)};
|
|
export const ANALYTICS = ${JSON.stringify(ANALYTICS)};
|
|
`;
|
|
}
|
|
},
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
if (typeof _themeConfig === 'string') {
|
|
addWatchFile(new URL(_themeConfig, config.root));
|
|
|
|
buildLogger.info(`Astrowind \`${_themeConfig}\` has been loaded.`);
|
|
} else {
|
|
buildLogger.info(`Astrowind config has been loaded.`);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
};
|