shadcn-ui/ui codebase analysis: How does shadcn-ui CLI work? — Part 2.7

I wanted to find out how shadcn-ui CLI works. In this article, I discuss the code used to build the shadcn-ui/ui CLI.

In part 2.6, we looked at function getTsConfigAliasPrefix that returns the alias used in paths in your project’s ts-config.json.

Let’s move on to the next line of code.

At L84, it is a simple check that returns null if any of the projectType or tailwindCssFile or tsConfigAliasPrefix does not exist.

Let’s learn more about isTypescriptProject(cwd)

const isTsx = await isTypeScriptProject(cwd)
Enter fullscreen mode
Exit fullscreen mode

isTypescriptProject is a function imported from ui/packages/cli/src/utils/get-project-info.ts and this function checks if the cwd (current working directory) has a tsconfig.json file.

export async function isTypeScriptProject(cwd: string) { // Check if cwd has a tsconfig.json file. return pathExists(path.resolve(cwd, "tsconfig.json"))
}
Enter fullscreen mode
Exit fullscreen mode

pathExists

pathExists is a function imported from fs-extra

import fs, { pathExists } from "fs-extra"
Enter fullscreen mode
Exit fullscreen mode

Conclusion:

To check if a project uses TypeScript, you could do the same thing that shadcn-ui/ui CLI package does. That is, check if tsconfig.json path exists in the given cwd using pathExists function provided by fs-extra.

Want to learn how to build shadcn-ui/ui from scratch? Check out build-from-scratch

About me:

Website: https://ramunarasinga.com/

Linkedin: https://www.linkedin.com/in/ramu-narasinga-189361128/

Github: https://github.com/Ramu-Narasinga

Email: [email protected]

Build shadcn-ui/ui from scratch

References:

  1. https://github.com/shadcn-ui/ui/blob/main/packages/cli/src/utils/get-project-info.ts#L84C3-L88C47
  2. https://github.com/shadcn-ui/ui/blob/main/packages/cli/src/utils/get-project-info.ts#L174
  3. https://github.com/shadcn-ui/ui/blob/main/packages/cli/src/utils/get-project-info.ts#L10
  4. https://www.npmjs.com/package/fs-extra

Discover more from Coursity

Subscribe to get the latest posts sent to your email.

Leave a Comment

Your email address will not be published. Required fields are marked *

Discover more from Coursity

Subscribe now to keep reading and get access to the full archive.

Continue reading

Scroll to Top
Enhance your iot device protection and maintain home automation safety effortlessly. Unn cut off marks for jamb www. The importance social life skills :  .