Files
doc.rustdesk.com/v3/vendor/integration/index.ts
T
2026-07-14 17:33:00 +08:00

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.`);
}
},
},
};
};