mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-30 17:37:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const path = require('path');
 | |
| const fs = require('fs');
 | |
| const { rimraf } = require('rimraf');
 | |
| const execa = require('execa');
 | |
| const { createStrapi } = require('create-strapi-app');
 | |
| 
 | |
| /**
 | |
|  * Deletes a test app
 | |
|  * @param {string} appPath - name of the app / folder where the app is located
 | |
|  */
 | |
| const cleanTestApp = async (appPath) => {
 | |
|   await rimraf(path.resolve(appPath));
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Runs strapi generate new
 | |
|  * @param {Object} options - Options
 | |
|  * @param {string} options.appPath - Name of the app that will be created (also the name of the folder)
 | |
|  * @param {database} options.database - Arguments to create the testApp with the provided database params
 | |
|  */
 | |
| const generateTestApp = async ({ appPath, database, template, link = false }) => {
 | |
|   const pkg = require(path.resolve(__dirname, '../../packages/core/strapi/package.json'));
 | |
| 
 | |
|   const scope = {
 | |
|     database,
 | |
|     rootPath: path.resolve(appPath),
 | |
|     name: path.basename(appPath),
 | |
|     packageManager: 'yarn',
 | |
|     // disable quickstart run app after creation
 | |
|     runApp: false,
 | |
|     // use package version as strapiVersion (all packages have the same version);
 | |
|     strapiVersion: pkg.version,
 | |
|     isQuickstart: false,
 | |
|     uuid: undefined,
 | |
|     deviceId: null,
 | |
|     installDependencies: false,
 | |
|     dependencies: {
 | |
|       '@strapi/strapi': pkg.version,
 | |
|       '@strapi/plugin-users-permissions': pkg.version,
 | |
|       '@strapi/plugin-graphql': pkg.version,
 | |
|       '@strapi/plugin-documentation': pkg.version,
 | |
|       '@strapi/plugin-cloud': pkg.version,
 | |
|       react: '18.2.0',
 | |
|       'react-dom': '18.2.0',
 | |
|       'react-router-dom': '^6.0.0',
 | |
|       'styled-components': '^6.0.0',
 | |
|     },
 | |
|     template: template ? path.resolve(template) : template,
 | |
|     gitInit: false,
 | |
|   };
 | |
| 
 | |
|   await createStrapi(scope);
 | |
| 
 | |
|   if (link) {
 | |
|     await linkPackages(scope);
 | |
|   }
 | |
| };
 | |
| 
 | |
| const linkPackages = async (scope) => {
 | |
|   fs.writeFileSync(path.join(scope.rootPath, 'yarn.lock'), '');
 | |
| 
 | |
|   await execa('node', [path.join(__dirname, '../..', 'scripts', 'yalc-link.js')], {
 | |
|     cwd: scope.rootPath,
 | |
|     stdio: 'inherit',
 | |
|   });
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Runs a test app
 | |
|  * @param {string} appPath - name of the app / folder where the app is located
 | |
|  */
 | |
| const runTestApp = async (appPath) => {
 | |
|   const cmdContext = {
 | |
|     stdio: 'inherit',
 | |
|     cwd: path.resolve(__dirname, '../..', appPath),
 | |
|     env: {
 | |
|       // if STRAPI_LICENSE is in the env the test will run in ee automatically
 | |
|       STRAPI_DISABLE_EE: !process.env.STRAPI_LICENSE,
 | |
|       FORCE_COLOR: 1,
 | |
|       JWT_SECRET: 'aSecret',
 | |
|     },
 | |
|   };
 | |
| 
 | |
|   try {
 | |
|     await execa('yarn', ['strapi', 'build'], cmdContext);
 | |
|     await execa('yarn', ['strapi', 'start'], cmdContext);
 | |
| 
 | |
|     process.exit(0);
 | |
|   } catch (error) {
 | |
|     console.error(error);
 | |
|     process.exit(1);
 | |
|   }
 | |
| };
 | |
| 
 | |
| module.exports = {
 | |
|   cleanTestApp,
 | |
|   generateTestApp,
 | |
|   runTestApp,
 | |
| };
 | 
