shadcn-ui/ui codebase analysis: How does shadcn-ui CLI work? — Part 2.7
Ramu Narasinga
Posted on July 5, 2024
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)
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"))
}
pathExists
pathExists is a function imported from fs-extra
import fs, { pathExists } from "fs-extra"
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.
Get free courses inspired by the best practices used in open source.
About me:
Website: https://ramunarasinga.com/
Linkedin: https://www.linkedin.com/in/ramu-narasinga-189361128/
Github: https://github.com/Ramu-Narasinga
Email: ramu.narasinga@gmail.com
Learn the best practices used in open source.
References:
- https://github.com/shadcn-ui/ui/blob/main/packages/cli/src/utils/get-project-info.ts#L84C3-L88C47
- https://github.com/shadcn-ui/ui/blob/main/packages/cli/src/utils/get-project-info.ts#L174
- https://github.com/shadcn-ui/ui/blob/main/packages/cli/src/utils/get-project-info.ts#L10
- https://www.npmjs.com/package/fs-extra
Posted on July 5, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.