Home / Function/ build() — astro Function Reference

build() — astro Function Reference

Architecture documentation for the build() function in build.mjs from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  b2d9a8c1_a75c_864a_f967_2d5749a761a5["build()"]
  ff2c719f_fe27_09a3_da3d_e2e373d9ff80["build.mjs"]
  b2d9a8c1_a75c_864a_f967_2d5749a761a5 -->|defined in| ff2c719f_fe27_09a3_da3d_e2e373d9ff80
  style b2d9a8c1_a75c_864a_f967_2d5749a761a5 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/language-tools/vscode/scripts/build.mjs lines 10–75

export default async function build() {
	const isDev = process.argv.includes('--watch');
	const metaFile = process.argv.includes('--metafile');

	/**
	 * @satisfies {import('esbuild').BuildOptions}
	 */
	const config = {
		entryPoints: {
			'dist/node/client': './src/client.ts',
			'dist/node/server': './node_modules/@astrojs/language-server/bin/nodeServer.js',
			'dist/astro-ts-plugin-bundle/index': './node_modules/@astrojs/ts-plugin/dist/index.js',
		},
		bundle: true,
		metafile: metaFile,
		sourcemap: isDev,
		outdir: '.',
		external: ['vscode', '@astrojs/compiler', 'prettier', 'prettier-plugin-astro'],
		format: 'cjs',
		platform: 'node',
		tsconfig: './tsconfig.json',
		define: { 'process.env.NODE_ENV': '"production"' },
		minify: process.argv.includes('--minify'),
		plugins: [
			copy({
				resolveFrom: 'cwd',
				assets: {
					from: ['../language-server/types/**/*.d.ts'],
					to: ['./dist/types'],
					watch: isDev,
				},
			}),
			{
				name: 'umd2esm',
				setup(pluginBuild) {
					pluginBuild.onResolve(
						{ filter: /^(vscode-.*-languageservice|jsonc-parser)/ },
						(buildArgs) => {
							const pathUmdMay = require.resolve(buildArgs.path, { paths: [buildArgs.resolveDir] });
							// Call twice the replace is to solve the problem of the path in Windows
							const pathEsm = pathUmdMay.replace('/umd/', '/esm/').replace('\\umd\\', '\\esm\\');
							return { path: pathEsm };
						},
					);
				},
			},
		],
	};

	if (!isDev) {
		const result = await esbuild.build(config);
		if (metaFile) fs.writeFileSync('meta.json', JSON.stringify(result.metafile));
		return;
	}

	const builder = await esbuild.context({
		...config,
		plugins: [rebuildPlugin, ...(config.plugins ?? [])],
	});

	await builder.watch();

	process.on('beforeExit', () => {
		builder.dispose && builder.dispose();
	});
}

Domain

Subdomains

Frequently Asked Questions

What does build() do?
build() is a function in the astro codebase, defined in packages/language-tools/vscode/scripts/build.mjs.
Where is build() defined?
build() is defined in packages/language-tools/vscode/scripts/build.mjs at line 10.

Analyze Your Own Codebase

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

Try Supermodel Free