createIntegration() — astro Function Reference
Architecture documentation for the createIntegration() function in index.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD 8cb2df22_77fb_cdfc_6d71_9e016d4de497["createIntegration()"] 13f9df63_e787_0221_d262_fe287a4b7ce1["index.ts"] 8cb2df22_77fb_cdfc_6d71_9e016d4de497 -->|defined in| 13f9df63_e787_0221_d262_fe287a4b7ce1 style 8cb2df22_77fb_cdfc_6d71_9e016d4de497 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/integrations/cloudflare/src/index.ts lines 80–407
export default function createIntegration(args?: Options): AstroIntegration {
let _config: AstroConfig;
let finalBuildOutput: HookParameters<'astro:config:done'>['buildOutput'];
let _routes: IntegrationResolvedRoute[];
const sessionKVBindingName = args?.sessionKVBindingName ?? DEFAULT_SESSION_KV_BINDING_NAME;
const imagesBindingName = args?.imagesBindingName ?? DEFAULT_IMAGES_BINDING_NAME;
return {
name: '@astrojs/cloudflare',
hooks: {
'astro:config:setup': ({ command, config, updateConfig, logger, addWatchFile }) => {
let session = config.session;
if (args?.imageService === 'cloudflare-binding') {
logger.info(
`Enabling image processing with Cloudflare Images for production with the "${imagesBindingName}" Images binding.`,
);
}
if (!session?.driver) {
logger.info(
`Enabling sessions with Cloudflare KV with the "${sessionKVBindingName}" KV binding.`,
);
session = {
driver: sessionDrivers.cloudflareKVBinding({
binding: sessionKVBindingName,
}),
cookie: session?.cookie,
ttl: session?.ttl,
};
}
const cfPluginConfig: PluginConfig = {
viteEnvironment: { name: 'ssr' },
config: cloudflareConfigCustomizer({
sessionKVBindingName: args?.sessionKVBindingName,
imagesBindingName:
args?.imageService === 'cloudflare-binding' ? args?.imagesBindingName : false,
}),
experimental: {
prerenderWorker: {
config(_, { entryWorkerConfig }) {
return {
...entryWorkerConfig,
// This is the Vite environment name used for prerendering
name: 'prerender',
};
},
},
},
};
updateConfig({
build: {
client: new URL(`./client/`, config.outDir),
server: new URL('./_worker.js/', config.outDir),
redirects: false,
},
session,
vite: {
plugins: [
cfVitePlugin(cfPluginConfig),
{
name: '@astrojs/cloudflare:cf-imports',
enforce: 'pre',
resolveId: {
filter: {
id: /^cloudflare:/,
},
handler(id) {
return { id, external: true };
},
},
},
{
name: '@astrojs/cloudflare:environment',
configEnvironment(environmentName, _options) {
const isServerEnvironment = ['astro', 'ssr', 'prerender'].includes(
environmentName,
Domain
Subdomains
Source
Frequently Asked Questions
What does createIntegration() do?
createIntegration() is a function in the astro codebase, defined in packages/integrations/cloudflare/src/index.ts.
Where is createIntegration() defined?
createIntegration() is defined in packages/integrations/cloudflare/src/index.ts at line 80.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free