UNPKG

@strapi/generate-new

Version:

Generate a new Strapi application.

1 lines 5.46 kB
{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import { join, resolve, basename } from 'node:path';\nimport { readFileSync } from 'node:fs';\nimport os from 'node:os';\nimport readline from 'node:readline';\nimport crypto from 'crypto';\nimport * as sentry from '@sentry/node';\nimport hasYarn from './utils/has-yarn';\nimport checkRequirements from './utils/check-requirements';\nimport { trackError, captureException } from './utils/usage';\nimport parseDatabaseArguments from './utils/parse-db-arguments';\nimport generateNew from './generate-new';\nimport machineID from './utils/machine-id';\nimport type { Scope, NewOptions } from './types';\n\nexport { default as checkInstallPath } from './utils/check-install-path';\n\nexport type { NewOptions } from './types';\n\nconst packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));\n\nexport const generateNewApp = (projectDirectory: string, options: Partial<NewOptions>) => {\n sentry.init({\n dsn: 'https://841d2b2c9b4d4b43a4cde92794cb705a@sentry.io/1762059',\n });\n\n checkRequirements();\n\n const rootPath = resolve(projectDirectory);\n\n const tmpPath = join(os.tmpdir(), `strapi${crypto.randomBytes(6).toString('hex')}`);\n\n const useNpm = options.useNpm !== undefined;\n\n const scope: Scope = {\n rootPath,\n name: basename(rootPath),\n // disable quickstart run app after creation\n runQuickstartApp: options.run !== false,\n // use pacakge version as strapiVersion (all packages have the same version);\n strapiVersion: packageJson.version,\n debug: options.debug !== undefined,\n quick: options.quickstart,\n template: options.template,\n packageJsonStrapi: {\n template: options.template,\n starter: options.starter,\n },\n uuid: (process.env.STRAPI_UUID_PREFIX || '') + crypto.randomUUID(),\n docker: process.env.DOCKER === 'true',\n deviceId: machineID(),\n tmpPath,\n // use yarn if available and --use-npm isn't true\n useYarn: !useNpm && hasYarn(),\n installDependencies: true,\n strapiDependencies: [\n '@strapi/strapi',\n '@strapi/plugin-users-permissions',\n '@strapi/plugin-i18n',\n '@strapi/plugin-cloud',\n ],\n additionalsDependencies: {\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router-dom': '5.3.4',\n 'styled-components': '5.3.3',\n },\n useTypescript: Boolean(options.typescript),\n };\n\n sentry.configureScope(function configureScope(sentryScope) {\n const tags = {\n os: os.type(),\n osPlatform: os.platform(),\n osArch: os.arch(),\n osRelease: os.release(),\n version: scope.strapiVersion,\n nodeVersion: process.versions.node,\n docker: scope.docker,\n };\n\n (Object.keys(tags) as Array<keyof typeof tags>).forEach((tag) => {\n sentryScope.setTag(tag, tags[tag]);\n });\n });\n\n parseDatabaseArguments({ scope, args: options });\n initCancelCatcher();\n\n return generateNew(scope).catch((error) => {\n console.error(error);\n return captureException(error).then(() => {\n return trackError({ scope, error }).then(() => {\n process.exit(1);\n });\n });\n });\n};\n\nfunction initCancelCatcher() {\n // Create interface for windows user to let them quit the program.\n if (process.platform === 'win32') {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n rl.on('SIGINT', function sigint() {\n process.emit('SIGINT');\n });\n }\n\n process.on('SIGINT', () => {\n process.exit(1);\n });\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAkBA,MAAM,cAAc,KAAK,MAAM,aAAa,QAAQ,WAAW,iBAAiB,GAAG,MAAM,CAAC;AAE7E,MAAA,iBAAiB,CAAC,kBAA0B,YAAiC;AACxF,SAAO,KAAK;AAAA,IACV,KAAK;AAAA,EAAA,CACN;AAEiB;AAEZ,QAAA,WAAW,QAAQ,gBAAgB;AAEzC,QAAM,UAAU,KAAK,GAAG,OAAA,GAAU,SAAS,OAAO,YAAY,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE;AAE5E,QAAA,SAAS,QAAQ,WAAW;AAElC,QAAM,QAAe;AAAA,IACnB;AAAA,IACA,MAAM,SAAS,QAAQ;AAAA;AAAA,IAEvB,kBAAkB,QAAQ,QAAQ;AAAA;AAAA,IAElC,eAAe,YAAY;AAAA,IAC3B,OAAO,QAAQ,UAAU;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf,UAAU,QAAQ;AAAA,IAClB,mBAAmB;AAAA,MACjB,UAAU,QAAQ;AAAA,MAClB,SAAS,QAAQ;AAAA,IACnB;AAAA,IACA,OAAO,QAAQ,IAAI,sBAAsB,MAAM,OAAO,WAAW;AAAA,IACjE,QAAQ,QAAQ,IAAI,WAAW;AAAA,IAC/B,UAAU,UAAU;AAAA,IACpB;AAAA;AAAA,IAEA,SAAS,CAAC,UAAU,QAAQ;AAAA,IAC5B,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO;AAAA,MACP,aAAa;AAAA,MACb,oBAAoB;AAAA,MACpB,qBAAqB;AAAA,IACvB;AAAA,IACA,eAAe,QAAQ,QAAQ,UAAU;AAAA,EAAA;AAGpC,SAAA,eAAe,SAAS,eAAe,aAAa;AACzD,UAAM,OAAO;AAAA,MACX,IAAI,GAAG,KAAK;AAAA,MACZ,YAAY,GAAG,SAAS;AAAA,MACxB,QAAQ,GAAG,KAAK;AAAA,MAChB,WAAW,GAAG,QAAQ;AAAA,MACtB,SAAS,MAAM;AAAA,MACf,aAAa,QAAQ,SAAS;AAAA,MAC9B,QAAQ,MAAM;AAAA,IAAA;AAGf,WAAO,KAAK,IAAI,EAA+B,QAAQ,CAAC,QAAQ;AAC/D,kBAAY,OAAO,KAAK,KAAK,GAAG,CAAC;AAAA,IAAA,CAClC;AAAA,EAAA,CACF;AAED,yBAAuB,EAAE,OAAO,MAAM,QAAS,CAAA;AAC7B;AAElB,SAAO,YAAY,KAAK,EAAE,MAAM,CAAC,UAAU;AACzC,YAAQ,MAAM,KAAK;AACnB,WAAO,iBAAiB,KAAK,EAAE,KAAK,MAAM;AACxC,aAAO,WAAW,EAAE,OAAO,OAAO,EAAE,KAAK,MAAM;AAC7C,gBAAQ,KAAK,CAAC;AAAA,MAAA,CACf;AAAA,IAAA,CACF;AAAA,EAAA,CACF;AACH;AAEA,SAAS,oBAAoB;AAEvB,MAAA,QAAQ,aAAa,SAAS;AAC1B,UAAA,KAAK,SAAS,gBAAgB;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,IAAA,CACjB;AAEE,OAAA,GAAG,UAAU,SAAS,SAAS;AAChC,cAAQ,KAAK,QAAQ;AAAA,IAAA,CACtB;AAAA,EACH;AAEQ,UAAA,GAAG,UAAU,MAAM;AACzB,YAAQ,KAAK,CAAC;AAAA,EAAA,CACf;AACH;"}