DEV Community

Ramu Narasinga
Ramu Narasinga

Posted on • Edited on • Originally published at thinkthroo.com

postbuild.ts file in Zod codebase.

In this article, we will review postbuild.ts file in Zod codebase. We will look at:

  1. Where is postbuild.ts located in Zod codebase?

  2. What does the code inside postbuild.ts tell us?

Where is postbuild.ts located in Zod codebase?

You will find this postbuild.ts file in zod codebase at https://github.com/colinhacks/zod/blob/main/packages/zod/postbuild.ts

What does the code inside postbuild.ts tell us?

You will find the below code in postbuild.ts:

import { readFileSync, writeFileSync } from "node:fs";

const packageJsonPath = "./package.json";

try {
  // Read the package.json file
  const packageJson = readFileSync(packageJsonPath, "utf-8");

  // Replace occurrences of "types": "./dist/commonjs/ with "types": "./dist/esm/
  const updatedPackageJson = packageJson.replace(/"types": "\.\/dist\/commonjs\//g, '"types": "./dist/esm/');

  // Write the updated content back to package.json
  writeFileSync(packageJsonPath, updatedPackageJson, "utf-8");

  console.log('Successfully updated "types" paths in package.json');
} catch (error) {
  console.error("Error updating package.json:", error);
}
Enter fullscreen mode Exit fullscreen mode

There are mainly three things happening, explained using the comments.

  1. Read the package.json file
 const packageJson = readFileSync(packageJsonPath, "utf-8");
Enter fullscreen mode Exit fullscreen mode

2. Replace occurrences of “tasdypes”: “./dist/commonjs/` with “types”: “./dist/esm/”

javascript
const updatedPackageJson = packageJson.replace(/"types": "\.\/dist\/commonjs\//g, '"types": "./dist/esm/');

3. Write the updated content back to package.json

javascript
writeFileSync(packageJsonPath, updatedPackageJson, "utf-8");

As you can see from the console.log statement below, all this file is doing is just updating “types” path in package.json.

javascript
console.log('Successfully updated "types" paths in package.json');

About me:

Hey, my name is Ramu Narasinga. I study large open-source projects and create content about their codebase architecture and best practices, sharing it through articles, videos.

Build Shadcn CLI from scratch.

Email — [email protected]

My Github — https://github.com/ramu-narasinga

My website — https://ramunarasinga.com

My YouTube channel — https://www.youtube.com/@ramu-narasinga

Learning platform — https://thinkthroo.com

Codebase Architecture — https://app.thinkthroo.com/architecture

Best practices — https://app.thinkthroo.com/best-practices

Production-grade projects — https://app.thinkthroo.com/production-grade-projects

References

  1. https://github.com/colinhacks/zod/blob/main/packages/zod/postbuild.ts

Top comments (0)