Package Exports
- @scaffit/core
Readme
@scaffit/core
Core utilities for Scaffit - Framework detection, AST manipulation, file operations, and scaffold execution.
Features
- Framework Detection: Automatically detect Next.js, React, Vue, Angular, Svelte, Express, Fastify, Node.js
- AST Engine: Parse, modify, and generate JavaScript/TypeScript code
- File Operations: Safe file reading/writing with project detection
- Template Engine: Variable replacement and conditional rendering
- Scaffold Executor: Common installation logic and dependency management
- Validation: Zod-based configuration validation
Usage
import { FileOperations, ASTEngine, ScaffoldExecutor } from '@scaffit/core';
// Detect project framework
const framework = FileOperations.detectFramework('./my-project');
const projectInfo = FileOperations.detectProject('./my-project');
// Parse and modify files
const ast = ASTEngine.parseFile('./src/index.ts');
ASTEngine.addImport('./src/index.ts', 'react', ['useState']);
// Execute scaffold
const result = await ScaffoldExecutor.executeScaffold(scaffold, config, './my-project');
API
FileOperations
detectFramework(rootDir)
- Detect project framework (Next.js, React, Vue, Angular, Svelte, Express, Fastify, Node.js)detectProject(rootDir)
- Detect framework and configurationreadFile(filePath)
- Safely read filewriteFile(filePath, content)
- Safely write fileaddDependency(rootDir, name, version, isDev)
- Add package dependencyaddScript(rootDir, name, command)
- Add npm scriptgetFrameworkConfigPaths(framework)
- Get framework-specific directory pathsgetFrameworkExtensions(framework)
- Get framework-specific file extensionsgetFrameworkDependencies(framework)
- Get recommended dependencies for framework
ASTEngine
parseFile(filePath)
- Parse JS/TS to ASTaddImport(filePath, source, specifiers)
- Add import statementaddExport(filePath, name, value)
- Add export statementaddFunction(filePath, name, params, body)
- Add functionapplyModifications(filePath, modifications)
- Apply multiple changes
TemplateEngine
renderTemplate(template, variables)
- Simple variable replacementrenderTemplateWithConditionals(template, variables)
- With if/unless blocksgenerateFileContent(templatePath, variables)
- Generate file content
ScaffoldExecutor
executeScaffold(scaffold, config, projectRoot)
- Run scaffold installationgetScaffoldPreview(scaffold, config, projectRoot)
- Preview changescreateFileFromTemplate(filePath, templateName, variables)
- Create fileinstallDependencies(projectRoot, packageManager)
- Install deps