({
projectName,
scopedAppName,
packages,
noInstall,
appRouter,
databaseProvider,
}: CreateProjectOptions)
| 27 | } |
| 28 | |
| 29 | export const createProject = async ({ |
| 30 | projectName, |
| 31 | scopedAppName, |
| 32 | packages, |
| 33 | noInstall, |
| 34 | appRouter, |
| 35 | databaseProvider, |
| 36 | }: CreateProjectOptions) => { |
| 37 | const pkgManager = getUserPkgManager(); |
| 38 | const projectDir = path.resolve(process.cwd(), projectName); |
| 39 | |
| 40 | // Bootstraps the base Next.js application |
| 41 | await scaffoldProject({ |
| 42 | projectName, |
| 43 | projectDir, |
| 44 | pkgManager, |
| 45 | scopedAppName, |
| 46 | noInstall, |
| 47 | appRouter, |
| 48 | databaseProvider, |
| 49 | }); |
| 50 | |
| 51 | // Install the selected packages |
| 52 | installPackages({ |
| 53 | projectName, |
| 54 | scopedAppName, |
| 55 | projectDir, |
| 56 | pkgManager, |
| 57 | packages, |
| 58 | noInstall, |
| 59 | appRouter, |
| 60 | databaseProvider, |
| 61 | }); |
| 62 | |
| 63 | // Select necessary _app,index / layout,page files |
| 64 | if (appRouter) { |
| 65 | // Replace next.config |
| 66 | fs.copyFileSync( |
| 67 | path.join(PKG_ROOT, "template/extras/config/next-config-appdir.js"), |
| 68 | path.join(projectDir, "next.config.js") |
| 69 | ); |
| 70 | |
| 71 | selectLayoutFile({ projectDir, packages }); |
| 72 | selectPageFile({ projectDir, packages }); |
| 73 | } else { |
| 74 | selectAppFile({ projectDir, packages }); |
| 75 | selectIndexFile({ projectDir, packages }); |
| 76 | } |
| 77 | |
| 78 | // If no tailwind, select use css modules |
| 79 | if (!packages.tailwind.inUse) { |
| 80 | const indexModuleCss = path.join( |
| 81 | PKG_ROOT, |
| 82 | "template/extras/src/index.module.css" |
| 83 | ); |
| 84 | const indexModuleCssDest = path.join( |
| 85 | projectDir, |
| 86 | "src", |
no test coverage detected