create-t3-app-deepmeta
Version:
Create web application with the t3 stack
45 lines (38 loc) • 1.23 kB
text/typescript
import { type PkgInstallerMap } from "~/installers/index.js";
import path from "path";
import { installPackages } from "~/helpers/installPackages.js";
import { scaffoldProject } from "~/helpers/scaffoldProject.js";
import { selectAppFile, selectIndexFile } from "~/helpers/selectBoilerplate.js";
import { getUserPkgManager } from "~/utils/getUserPkgManager.js";
interface CreateProjectOptions {
projectName: string;
packages: PkgInstallerMap;
noInstall: boolean;
importAlias: string;
}
export const createProject = async ({
projectName,
packages,
noInstall,
}: CreateProjectOptions) => {
const pkgManager = getUserPkgManager();
const projectDir = path.resolve(process.cwd(), projectName);
// Bootstraps the base Next.js application
await scaffoldProject({
projectName,
projectDir,
pkgManager,
noInstall,
});
// Install the selected packages
installPackages({
projectDir,
pkgManager,
packages,
noInstall,
});
// TODO: Look into using handlebars or other templating engine to scaffold without needing to maintain multiple copies of the same file
selectAppFile({ projectDir, packages });
selectIndexFile({ projectDir, packages });
return projectDir;
};