51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
const ASTRO_APP_ID = "virtual:astro:app";
|
|
const RESOLVED_ASTRO_APP_ID = "\0" + ASTRO_APP_ID;
|
|
const ASTRO_DEV_SERVER_APP_ID = "astro:server-app";
|
|
function vitePluginApp() {
|
|
let command;
|
|
return [
|
|
{
|
|
name: "astro:app",
|
|
configResolved(config) {
|
|
command = config.command;
|
|
},
|
|
resolveId: {
|
|
filter: {
|
|
id: new RegExp(`^${ASTRO_APP_ID}$`)
|
|
},
|
|
handler() {
|
|
return RESOLVED_ASTRO_APP_ID;
|
|
}
|
|
},
|
|
load: {
|
|
filter: {
|
|
id: new RegExp(`^${RESOLVED_ASTRO_APP_ID}$`)
|
|
},
|
|
handler() {
|
|
const entrypoint = command === "serve" ? "astro/app/entrypoint/dev" : "astro/app/entrypoint/prod";
|
|
const code = `export { createApp } from '${entrypoint}';`;
|
|
return {
|
|
code
|
|
};
|
|
}
|
|
}
|
|
},
|
|
{
|
|
name: "astro:server-app",
|
|
resolveId: {
|
|
filter: {
|
|
id: new RegExp(`^${ASTRO_DEV_SERVER_APP_ID}$`)
|
|
},
|
|
handler() {
|
|
const url = new URL("./createAstroServerApp.js", import.meta.url);
|
|
return this.resolve(url.toString());
|
|
}
|
|
}
|
|
}
|
|
];
|
|
}
|
|
export {
|
|
ASTRO_DEV_SERVER_APP_ID,
|
|
vitePluginApp
|
|
};
|