Home / Function/ createPlugin() — astro Function Reference

createPlugin() — astro Function Reference

Architecture documentation for the createPlugin() function in index.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  86fcdfff_881d_020c_7dbc_274b2f42a55d["createPlugin()"]
  1be97932_632b_c693_3537_b60cd384a0f5["index.ts"]
  86fcdfff_881d_020c_7dbc_274b2f42a55d -->|defined in| 1be97932_632b_c693_3537_b60cd384a0f5
  4d3f14a1_dd47_c6ba_2113_18491f2e7faa["appendForwardSlash()"]
  86fcdfff_881d_020c_7dbc_274b2f42a55d -->|calls| 4d3f14a1_dd47_c6ba_2113_18491f2e7faa
  style 86fcdfff_881d_020c_7dbc_274b2f42a55d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/integrations/partytown/src/index.ts lines 21–69

export default function createPlugin(options?: PartytownOptions): AstroIntegration {
	let partytownSnippetHtml: string;
	const partytownEntrypoint = resolve('@qwik.dev/partytown/package.json');
	const partytownLibDirectory = path.resolve(partytownEntrypoint, '../lib');
	return {
		name: '@astrojs/partytown',
		hooks: {
			'astro:config:setup': ({ config: _config, command, injectScript }) => {
				const lib = `${appendForwardSlash(_config.base)}~partytown/`;
				const recreateIFrameScript = `;(e=>{e.addEventListener("astro:before-swap",e=>{let r=document.body.querySelector("iframe[src*='${lib}']");if(r)e.newDocument.body.append(r)})})(document);`;
				const partytownConfig = {
					lib,
					...options?.config,
					debug: options?.config?.debug ?? command === 'dev',
				};
				partytownSnippetHtml = partytownSnippet(partytownConfig);
				partytownSnippetHtml += recreateIFrameScript;
				injectScript('head-inline', partytownSnippetHtml);
			},
			'astro:server:setup': ({ server }) => {
				const lib = options?.config?.lib ?? `/~partytown/`;
				server.middlewares.use(
					sirv(partytownLibDirectory, {
						mount: lib,
						dev: true,
						etag: true,
						extensions: [],
					}),
				);
			},
			'astro:build:done': async ({ dir }) => {
				await copyLibFiles(
					fileURLToPath(new URL(options?.config?.lib?.replace(/^\/?/, '') ?? '~partytown', dir)),
					{
						debugDir: options?.config?.debug ?? false,
					},
				);
			},
			'astro:build:ssr': async ({ manifest }) => {
				const dirpath = libDirPath({ debugDir: false });
				const files = await fs.promises.readdir(dirpath);
				for (const file of files) {
					if (file === 'debug') continue;
					manifest.assets.push(`/~partytown/${file}`);
				}
			},
		},
	};
}

Domain

Subdomains

Frequently Asked Questions

What does createPlugin() do?
createPlugin() is a function in the astro codebase, defined in packages/integrations/partytown/src/index.ts.
Where is createPlugin() defined?
createPlugin() is defined in packages/integrations/partytown/src/index.ts at line 21.
What does createPlugin() call?
createPlugin() calls 1 function(s): appendForwardSlash.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free