Home / File/ build.ts — drizzle-orm Source File

build.ts — drizzle-orm Source File

Architecture documentation for build.ts, a typescript file in the drizzle-orm codebase. 2 imports, 0 dependents.

File typescript DrizzleORM QueryBuilders 2 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  753ed290_5782_c744_1455_18e809074ec3["build.ts"]
  c10a8be4_82f5_0980_d482_1683db51662a["globals"]
  753ed290_5782_c744_1455_18e809074ec3 --> c10a8be4_82f5_0980_d482_1683db51662a
  7a50f276_e4b6_7905_ee35_58545d0171ef["cpy"]
  753ed290_5782_c744_1455_18e809074ec3 --> 7a50f276_e4b6_7905_ee35_58545d0171ef
  style 753ed290_5782_c744_1455_18e809074ec3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

#!/usr/bin/env -S pnpm tsx
import 'zx/globals';
import cpy from 'cpy';

async function updateAndCopyPackageJson() {
	const pkg = await fs.readJSON('package.json');

	const entries = await glob('src/**/*.ts');

	pkg.exports = entries.reduce<
		Record<string, {
			import: {
				types?: string;
				default: string;
			};
			require: {
				types: string;
				default: string;
			};
			default: string;
			types: string;
		}>
	>(
		(acc, rawEntry) => {
			const entry = rawEntry.match(/src\/(.*)\.ts/)![1]!;
			const exportsEntry = entry === 'index' ? '.' : './' + entry.replace(/\/index$/, '');
			const importEntry = `./${entry}.js`;
			const requireEntry = `./${entry}.cjs`;
			acc[exportsEntry] = {
				import: {
					types: `./${entry}.d.ts`,
					default: importEntry,
				},
				require: {
					types: `./${entry}.d.cts`,
					default: requireEntry,
				},
				types: `./${entry}.d.ts`,
				default: importEntry,
			};
			return acc;
		},
		{},
	);

	await fs.writeJSON('dist.new/package.json', pkg, { spaces: 2 });
}

await fs.remove('dist.new');

await Promise.all([
	(async () => {
		await $`tsup`.stdio('pipe', 'pipe', 'pipe');
	})(),
	(async () => {
		await $`tsc -p tsconfig.dts.json`.stdio('pipe', 'pipe', 'pipe');
		await cpy('dist-dts/**/*.d.ts', 'dist.new', {
			rename: (basename) => basename.replace(/\.d\.ts$/, '.d.cts'),
		});
		await cpy('dist-dts/**/*.d.ts', 'dist.new', {
			rename: (basename) => basename.replace(/\.d\.ts$/, '.d.ts'),
		});
	})(),
]);

await Promise.all([
	$`tsup src/version.ts --no-config --dts --format esm --outDir dist.new`.stdio('pipe', 'pipe', 'pipe'),
	$`tsup src/version.ts --no-config --dts --format cjs --outDir dist.new`.stdio('pipe', 'pipe', 'pipe'),
]);

await $`scripts/fix-imports.ts`;

await fs.copy('../README.md', 'dist.new/README.md');
await updateAndCopyPackageJson();
await fs.remove('dist');
await fs.rename('dist.new', 'dist');

Domain

Subdomains

Dependencies

  • cpy
  • globals

Frequently Asked Questions

What does build.ts do?
build.ts is a source file in the drizzle-orm codebase, written in typescript. It belongs to the DrizzleORM domain, QueryBuilders subdomain.
What functions are defined in build.ts?
build.ts defines 1 function(s): updateAndCopyPackageJson.
What does build.ts depend on?
build.ts imports 2 module(s): cpy, globals.
Where is build.ts in the architecture?
build.ts is located at drizzle-orm/scripts/build.ts (domain: DrizzleORM, subdomain: QueryBuilders, directory: drizzle-orm/scripts).

Analyze Your Own Codebase

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

Try Supermodel Free