Generate a new Strapi application with TypeScript/JavaScript support, database configuration, and template system.
—
Template processing and resource file management for project scaffolding, including support for custom templates, starter configurations, and comprehensive file generation for both TypeScript and JavaScript projects.
Configuration structure for custom templates and starters.
/**
* Template configuration structure
*/
interface TemplateConfig {
/** Package configuration overrides and additions */
package: Record<string, unknown>;
}
/**
* Package metadata information
*/
interface PackageInfo {
/** Package name */
name: string;
/** Package version */
version: string;
}Core template merging functionality for integrating custom templates with generated projects.
/**
* Merges custom template with generated project
* Downloads and integrates template files, configurations, and dependencies
* @param scope - Project configuration scope containing template URL/name
* @param rootPath - Target project directory path
* @throws Error if template installation fails
*/
function mergeTemplate(scope: Scope, rootPath: string): Promise<void>;Supported Template Sources:
Template Integration Features:
Utility for downloading and processing npm-based templates.
/**
* Fetches template from npm registry or URL
* @param templateName - npm package name or URL
* @param destination - Local directory to extract template
* @returns Template metadata and configuration
*/
function fetchNpmTemplate(
templateName: string,
destination: string
): Promise<TemplateConfig>;Dynamic package.json generation with dependency management and project metadata.
/**
* Generates package.json content for new Strapi project
* @param options - Package generation options
* @returns Complete package.json object
*/
function generatePackageJson(options: {
/** Core Strapi dependencies to include */
strapiDependencies: string[];
/** Additional dependencies (React, etc.) */
additionalsDependencies: Record<string, string>;
/** Strapi version for dependency versions */
strapiVersion: string;
/** Project name (kebab-case) */
projectName: string;
/** Unique project identifier */
uuid: string;
/** Strapi-specific package.json configuration */
packageJsonStrapi: Record<string, unknown>;
}): Record<string, unknown>;Generated Package.json Features:
Configuration file generators for TypeScript projects.
/**
* Generates tsconfig.json for admin panel
* @returns TypeScript configuration object for admin
*/
function generateAdminTsConfig(): Record<string, unknown>;
/**
* Generates tsconfig.json for server-side code
* @returns TypeScript configuration object for server
*/
function generateServerTsConfig(): Record<string, unknown>;TypeScript Configuration Features:
Configuration file generators for JavaScript projects.
/**
* Generates jsconfig.json for JavaScript projects
* @returns JavaScript project configuration object
*/
function generateJsConfig(): Record<string, unknown>;Environment file and configuration generation.
/**
* Creates .env file content with default environment variables
* @returns Environment file content as string
*/
function createEnvFile(): string;Generated Environment Variables:
# Server
HOST=0.0.0.0
PORT=1337
# Secrets
APP_KEYS=generated-keys
API_TOKEN_SALT=generated-salt
ADMIN_JWT_SECRET=generated-secret
TRANSFER_TOKEN_SALT=generated-salt
# Security
JWT_SECRET=generated-secretComplete file templates for TypeScript Strapi projects.
Configuration Files:
config/admin.ts - Admin panel configurationconfig/api.ts - API configurationconfig/middlewares.ts - Middleware configurationconfig/plugins.ts - Plugin configurationconfig/server.ts - Server configurationApplication Files:
src/index.ts - Main application entry pointsrc/admin/webpack.config.example.js - Webpack configuration exampleComplete file templates for JavaScript Strapi projects.
Configuration Files:
config/admin.js - Admin panel configurationconfig/api.js - API configurationconfig/middlewares.js - Middleware configurationconfig/plugins.js - Plugin configurationconfig/server.js - Server configurationApplication Files:
src/index.js - Main application entry pointsrc/admin/webpack.config.example.js - Webpack configuration exampleProject configuration and tooling files.
Common Dot Files:
.gitignore - Git ignore patterns.env.example - Environment variable template.editorconfig - Editor configuration.eslintrc.js - ESLint configuration.prettierrc - Prettier configurationJavaScript-Specific:
// Template source resolution
if (scope.template.startsWith('http')) {
// URL-based template (GitHub, tarball, etc.)
await downloadTemplate(scope.template, tempPath);
} else if (scope.template.includes('/')) {
// npm scoped package
await fetchNpmTemplate(scope.template, tempPath);
} else {
// Simple npm package name
await fetchNpmTemplate(scope.template, tempPath);
}// Language-specific file copying
const language = scope.useTypescript ? 'ts' : 'js';
// Copy base template files
await fse.copy(
join(resourcesPath, 'files', language),
scope.rootPath
);
// Copy common dot files
await copyDotFiles('common');
// Copy language-specific dot files
if (!scope.useTypescript) {
await copyDotFiles('js');
}// Merge template configuration
if (scope.template) {
const templateConfig = await mergeTemplate(scope, scope.rootPath);
// Merge dependencies
Object.assign(configuration.dependencies, templateConfig.package.dependencies);
// Apply configuration overrides
applyTemplateOverrides(scope, templateConfig);
}import { generateNewApp } from "@strapi/generate-new";
await generateNewApp("./my-app", {
template: "https://github.com/strapi/strapi-template-blog",
typescript: true
});await generateNewApp("./my-app", {
template: "@strapi/template-corporate",
starter: "blog"
});await generateNewApp("./my-app", {
template: "https://github.com/user/custom-strapi-template",
typescript: true,
dbclient: "postgres",
dbhost: "localhost"
});Install with Tessl CLI
npx tessl i tessl/npm-strapi--generate-new