UNPKG

create-strapi-app

Version:

Generate a new Strapi application.

1 lines • 16.4 kB
{"version":3,"file":"create-strapi.mjs","sources":["../src/create-strapi.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport chalk from 'chalk';\nimport execa from 'execa';\nimport fse from 'fs-extra';\n\nimport { createGrowthSsoTrial } from '@strapi/cloud-cli';\n\nimport { copyTemplate } from './utils/template';\nimport { tryGitInit } from './utils/git';\nimport { trackUsage } from './utils/usage';\nimport { createPackageJSON } from './utils/package-json';\nimport { generateDotEnv } from './utils/dot-env';\nimport { isStderrError } from './types';\n\nimport type { Scope } from './types';\nimport { logger } from './utils/logger';\nimport { gitIgnore } from './utils/gitignore';\nimport { getInstallArgs } from './utils/get-package-manager-args';\n\nasync function createStrapi(scope: Scope) {\n const { rootPath } = scope;\n try {\n await fse.ensureDir(rootPath);\n await createApp(scope);\n } catch (error) {\n await fse.remove(rootPath);\n\n throw error;\n }\n}\n\nasync function createApp(scope: Scope) {\n const {\n rootPath,\n useTypescript,\n useExample,\n installDependencies,\n isQuickstart,\n template,\n packageManager,\n gitInit,\n runApp,\n isABTestEnabled,\n } = scope;\n\n const shouldRunSeed = useExample && installDependencies;\n\n await trackUsage({ event: 'willCreateProject', scope });\n\n logger.title('Strapi', `Creating a new application at ${chalk.green(rootPath)}`);\n\n if (!isQuickstart) {\n await trackUsage({ event: 'didChooseCustomDatabase', scope });\n } else {\n await trackUsage({ event: 'didChooseQuickstart', scope });\n }\n\n if (!template) {\n let templateName = useExample ? 'example' : 'vanilla';\n\n if (!useTypescript) {\n templateName = `${templateName}-js`;\n }\n\n const internalTemplatePath = join(__dirname, '../templates', templateName);\n if (await fse.exists(internalTemplatePath)) {\n await fse.copy(internalTemplatePath, rootPath);\n }\n } else {\n try {\n logger.info(`${chalk.cyan('Installing template')} ${template}`);\n\n await copyTemplate(scope, rootPath);\n\n logger.success('Template copied successfully.');\n } catch (error) {\n if (error instanceof Error) {\n logger.fatal(`Template installation failed: ${error.message}`);\n }\n\n throw error;\n }\n\n if (!fse.existsSync(join(rootPath, 'package.json'))) {\n logger.fatal(`Missing ${chalk.bold('package.json')} in template`);\n }\n }\n\n await trackUsage({ event: 'didCopyProjectFiles', scope });\n\n try {\n await createPackageJSON(scope);\n\n await trackUsage({ event: 'didWritePackageJSON', scope });\n\n // ensure node_modules is created\n await fse.ensureDir(join(rootPath, 'node_modules'));\n\n // create config/database\n await fse.writeFile(join(rootPath, '.env'), generateDotEnv(scope));\n\n await trackUsage({ event: 'didCopyConfigurationFiles', scope });\n } catch (err) {\n await fse.remove(rootPath);\n throw err;\n }\n\n // Create and save a growth sso trial license\n if (scope.shouldCreateGrowthSsoTrial) {\n try {\n const data = await createGrowthSsoTrial({ strapiVersion: scope.strapiVersion });\n\n if (data?.license) {\n fse.writeFile(join(rootPath, 'license.txt'), data.license);\n logger.log('Your 30 days trial will be applied automatically to your project. Enjoy!');\n }\n } catch (error) {\n logger.error('Error while trying to create your trial. Please try again later.');\n }\n }\n\n if (installDependencies) {\n try {\n logger.title('deps', `Installing dependencies with ${chalk.cyan(packageManager)}`);\n\n await trackUsage({ event: 'willInstallProjectDependencies', scope });\n\n await runInstall(scope);\n\n await trackUsage({ event: 'didInstallProjectDependencies', scope });\n\n logger.success(`Dependencies installed`);\n } catch (error) {\n const stderr = isStderrError(error) ? error.stderr : '';\n\n await trackUsage({\n event: 'didNotInstallProjectDependencies',\n scope,\n error: stderr.slice(-1024),\n });\n\n logger.fatal([\n chalk.bold(\n 'Oh, it seems that you encountered an error while installing dependencies in your project'\n ),\n '',\n `Don't give up, your project was created correctly`,\n '',\n `Fix the issues mentioned in the installation errors and try to run the following command:`,\n '',\n `cd ${chalk.green(rootPath)} && ${chalk.cyan(packageManager)} install`,\n ]);\n }\n }\n\n await trackUsage({ event: 'didCreateProject', scope });\n\n // make sure a gitignore file is created regardless of the user using git or not\n if (!(await fse.exists(join(rootPath, '.gitignore')))) {\n await fse.writeFile(join(rootPath, '.gitignore'), gitIgnore);\n }\n\n // Init git\n if (gitInit) {\n logger.title('git', 'Initializing git repository.');\n\n await tryGitInit(rootPath);\n\n logger.success('Initialized a git repository.');\n }\n\n if (shouldRunSeed) {\n if (await fse.exists(join(rootPath, 'scripts/seed.js'))) {\n logger.title('Seed', 'Seeding your database with sample data');\n\n try {\n await execa(packageManager, ['run', 'seed:example'], {\n stdio: 'inherit',\n cwd: rootPath,\n });\n logger.success('Sample data added to your database');\n } catch (error) {\n logger.error('Failed to seed your database. Skipping');\n }\n }\n }\n\n const cmd = chalk.cyan(`${packageManager} run`);\n\n logger.title('Strapi', `Your application was created!`);\n\n logger.log([\n 'Available commands in your project:',\n '',\n 'Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)',\n `${cmd} develop`,\n '',\n 'Start Strapi without watch mode.',\n `${cmd} start`,\n '',\n 'Build Strapi admin panel.',\n `${cmd} build`,\n '',\n 'Deploy Strapi project.',\n `${cmd} deploy`,\n '',\n ]);\n\n if (useExample) {\n logger.log(['Seed your database with sample data.', `${cmd} seed:example`, '']);\n }\n\n logger.log(['Display all available commands.', `${cmd} strapi\\n`]);\n\n if (installDependencies) {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n } else {\n logger.log([\n 'To get started run',\n '',\n `${chalk.cyan('cd')} ${rootPath}`,\n `${chalk.cyan(packageManager)} install`,\n !shouldRunSeed && useExample ? `${cmd} seed:example && ${cmd} develop` : `${cmd} develop`,\n ]);\n }\n\n if (runApp && installDependencies) {\n logger.title('Run', 'Running your Strapi application');\n\n try {\n await trackUsage({ event: 'willStartServer', scope });\n\n await execa(packageManager, ['run', 'develop'], {\n stdio: 'inherit',\n cwd: rootPath,\n env: {\n FORCE_COLOR: '1',\n },\n });\n } catch (error) {\n if (typeof error === 'string' || error instanceof Error) {\n await trackUsage({\n event: 'didNotStartServer',\n scope,\n error,\n });\n }\n\n logger.fatal('Failed to start your Strapi application');\n }\n }\n\n if (isABTestEnabled) {\n await trackUsage({ event: 'didEnableABTest', scope });\n }\n}\n\nasync function runInstall({ rootPath, packageManager }: Scope) {\n // include same cwd and env to ensure version check returns same version we use below\n const { envArgs, cmdArgs } = await getInstallArgs(packageManager, {\n cwd: rootPath,\n env: {\n ...process.env,\n NODE_ENV: 'development',\n },\n });\n\n const options: execa.Options = {\n cwd: rootPath,\n stdio: 'inherit',\n env: {\n ...process.env,\n ...envArgs,\n NODE_ENV: 'development',\n },\n };\n\n const proc = execa(packageManager, cmdArgs, options);\n\n return proc;\n}\n\nexport { createStrapi };\n"],"names":["createStrapi","scope","rootPath","fse","ensureDir","createApp","error","remove","useTypescript","useExample","installDependencies","isQuickstart","template","packageManager","gitInit","runApp","isABTestEnabled","shouldRunSeed","trackUsage","event","logger","title","chalk","green","templateName","internalTemplatePath","join","__dirname","exists","copy","info","cyan","copyTemplate","success","Error","fatal","message","existsSync","bold","createPackageJSON","writeFile","generateDotEnv","err","shouldCreateGrowthSsoTrial","data","createGrowthSsoTrial","strapiVersion","license","log","runInstall","stderr","isStderrError","slice","gitIgnore","tryGitInit","execa","stdio","cwd","cmd","env","FORCE_COLOR","envArgs","cmdArgs","getInstallArgs","process","NODE_ENV","options","proc"],"mappings":"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"}