Home / File/ create-project.ts — ui Source File

create-project.ts — ui Source File

Architecture documentation for create-project.ts, a typescript file in the ui codebase. 13 imports, 1 dependents.

File typescript FrameworkTooling CLICore 13 imports 1 dependents 5 functions

Entity Profile

Dependency Diagram

graph LR
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d["create-project.ts"]
  b80715bf_43eb_b495_f2cf_a439c5eb0e34["os"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> b80715bf_43eb_b495_f2cf_a439c5eb0e34
  d05ec4ea_7a68_3a36_bfa4_9ba7f8409ee5["path"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> d05ec4ea_7a68_3a36_bfa4_9ba7f8409ee5
  48a2db16_690d_8450_b9e9_0bd7642157d3["init"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 48a2db16_690d_8450_b9e9_0bd7642157d3
  8b63e39d_c91e_6de3_796b_cdd80586252f["fetcher"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 8b63e39d_c91e_6de3_796b_cdd80586252f
  97a0777f_440b_e006_936f_0537ce4b8f73["get-package-manager"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 97a0777f_440b_e006_936f_0537ce4b8f73
  6be7d8a9_c93c_8743_3ef7_968efff25479["handle-error"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 6be7d8a9_c93c_8743_3ef7_968efff25479
  15e8bad0_00cc_3d96_8e33_2f062120ea7f["highlighter"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 15e8bad0_00cc_3d96_8e33_2f062120ea7f
  1df8bbed_5110_29f0_12f0_996fc7a1eda1["logger"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 1df8bbed_5110_29f0_12f0_996fc7a1eda1
  a3e9bc4e_1faf_6261_a1db_396981c7761d["spinner"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> a3e9bc4e_1faf_6261_a1db_396981c7761d
  8fa2a696_bed4_6bec_383f_7df160ded516["execa"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 8fa2a696_bed4_6bec_383f_7df160ded516
  f9f5e551_eb59_1a6b_8bf2_b97e73eb13de["fs-extra"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> f9f5e551_eb59_1a6b_8bf2_b97e73eb13de
  e68f2c02_595f_e9c2_5917_7a8d47bcfc87["prompts"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> e68f2c02_595f_e9c2_5917_7a8d47bcfc87
  6802ce19_522d_e5fb_e458_8826d9f6952e["zod"]
  f570a109_148e_1b68_ffd0_6e7f2f8ca03d --> 6802ce19_522d_e5fb_e458_8826d9f6952e
  74dfec7c_a4d0_7cc3_4208_e3ebff9fa685["create-project.test.ts"]
  74dfec7c_a4d0_7cc3_4208_e3ebff9fa685 --> f570a109_148e_1b68_ffd0_6e7f2f8ca03d
  style f570a109_148e_1b68_ffd0_6e7f2f8ca03d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import os from "os"
import path from "path"
import { initOptionsSchema } from "@/src/commands/init"
import { fetchRegistry } from "@/src/registry/fetcher"
import { getPackageManager } from "@/src/utils/get-package-manager"
import { handleError } from "@/src/utils/handle-error"
import { highlighter } from "@/src/utils/highlighter"
import { logger } from "@/src/utils/logger"
import { spinner } from "@/src/utils/spinner"
import { execa } from "execa"
import fs from "fs-extra"
import prompts from "prompts"
import { z } from "zod"

const GITHUB_TEMPLATE_URL =
  "https://codeload.github.com/shadcn-ui/ui/tar.gz/main"

export const TEMPLATES = {
  next: "next",
  "next-monorepo": "next-monorepo",
  vite: "vite",
  start: "start",
} as const

export async function createProject(
  options: Pick<
    z.infer<typeof initOptionsSchema>,
    "cwd" | "name" | "force" | "srcDir" | "components" | "template"
  >
) {
  options = {
    srcDir: false,
    ...options,
  }

  let template: keyof typeof TEMPLATES =
    options.template && TEMPLATES[options.template as keyof typeof TEMPLATES]
      ? (options.template as keyof typeof TEMPLATES)
      : "next"
  let projectName: string =
    options.name ??
    (template === TEMPLATES.next ||
    template === TEMPLATES.vite ||
    template === TEMPLATES.start
      ? "my-app"
      : "my-monorepo")
  let nextVersion = "latest"

  const isRemoteComponent =
    options.components?.length === 1 &&
    !!options.components[0].match(/\/chat\/b\//)

  if (options.components && isRemoteComponent) {
    try {
      const [result] = await fetchRegistry(options.components)
      const { meta } = z
        .object({
          meta: z.object({
            nextVersion: z.string(),
          }),
// ... (377 more lines)

Subdomains

Dependencies

  • execa
  • fetcher
  • fs-extra
  • get-package-manager
  • handle-error
  • highlighter
  • init
  • logger
  • os
  • path
  • prompts
  • spinner
  • zod

Frequently Asked Questions

What does create-project.ts do?
create-project.ts is a source file in the ui codebase, written in typescript. It belongs to the FrameworkTooling domain, CLICore subdomain.
What functions are defined in create-project.ts?
create-project.ts defines 5 function(s): createMonorepoProject, createNextProject, createProject, createStartProject, createViteProject.
What does create-project.ts depend on?
create-project.ts imports 13 module(s): execa, fetcher, fs-extra, get-package-manager, handle-error, highlighter, init, logger, and 5 more.
What files import create-project.ts?
create-project.ts is imported by 1 file(s): create-project.test.ts.
Where is create-project.ts in the architecture?
create-project.ts is located at packages/shadcn/src/utils/create-project.ts (domain: FrameworkTooling, subdomain: CLICore, directory: packages/shadcn/src/utils).

Analyze Your Own Codebase

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

Try Supermodel Free