createMonorepoProject() — ui Function Reference
Architecture documentation for the createMonorepoProject() function in create-project.ts from the ui codebase.
Entity Profile
Dependency Diagram
graph TD e89cc6ee_836f_1ddc_f90e_984178e4153e["createMonorepoProject()"] f570a109_148e_1b68_ffd0_6e7f2f8ca03d["create-project.ts"] e89cc6ee_836f_1ddc_f90e_984178e4153e -->|defined in| f570a109_148e_1b68_ffd0_6e7f2f8ca03d ee4c31b0_cc12_35da_90d1_168cb9e6c7f0["createProject()"] ee4c31b0_cc12_35da_90d1_168cb9e6c7f0 -->|calls| e89cc6ee_836f_1ddc_f90e_984178e4153e style e89cc6ee_836f_1ddc_f90e_984178e4153e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/shadcn/src/utils/create-project.ts lines 229–292
async function createMonorepoProject(
projectPath: string,
options: {
packageManager: string
}
) {
const createSpinner = spinner(
`Creating a new Next.js monorepo. This may take a few minutes.`
).start()
try {
// Get the template.
const templatePath = path.join(os.tmpdir(), `shadcn-template-${Date.now()}`)
await fs.ensureDir(templatePath)
const response = await fetch(GITHUB_TEMPLATE_URL)
if (!response.ok) {
throw new Error(`Failed to download template: ${response.statusText}`)
}
// Write the tar file
const tarPath = path.resolve(templatePath, "template.tar.gz")
await fs.writeFile(tarPath, Buffer.from(await response.arrayBuffer()))
await execa("tar", [
"-xzf",
tarPath,
"-C",
templatePath,
"--strip-components=2",
"ui-main/templates/monorepo-next",
])
const extractedPath = path.resolve(templatePath, "monorepo-next")
await fs.move(extractedPath, projectPath)
await fs.remove(templatePath)
// Run install.
await execa(options.packageManager, ["install"], {
cwd: projectPath,
})
// await execa("cd", [cwd])
// Write project name to the package.json
const packageJsonPath = path.join(projectPath, "package.json")
if (fs.existsSync(packageJsonPath)) {
const packageJsonContent = await fs.readFile(packageJsonPath, "utf8")
const packageJson = JSON.parse(packageJsonContent)
packageJson.name = projectPath.split("/").pop()
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2))
}
// Try git init.
const cwd = process.cwd()
await execa("git", ["--version"], { cwd: projectPath })
await execa("git", ["init"], { cwd: projectPath })
await execa("git", ["add", "-A"], { cwd: projectPath })
await execa("git", ["commit", "-m", "Initial commit"], {
cwd: projectPath,
})
createSpinner?.succeed("Creating a new Next.js monorepo.")
} catch (error) {
createSpinner?.fail("Something went wrong creating a new Next.js monorepo.")
handleError(error)
}
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does createMonorepoProject() do?
createMonorepoProject() is a function in the ui codebase, defined in packages/shadcn/src/utils/create-project.ts.
Where is createMonorepoProject() defined?
createMonorepoProject() is defined in packages/shadcn/src/utils/create-project.ts at line 229.
What calls createMonorepoProject()?
createMonorepoProject() is called by 1 function(s): createProject.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free