{"_id":"@armynante/fieldwork-scaffold","name":"@armynante/fieldwork-scaffold","dist-tags":{"latest":"0.5.2"},"versions":{"0.5.2":{"name":"@armynante/fieldwork-scaffold","version":"0.5.2","description":"CLI for scaffolding new projects with optional frontend, backend, and storybook","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"bin":{"fw-scaffold":"dist/cli/index.js"},"scripts":{"build":"bun build ./src/index.ts --outdir ./dist --target node && bun build ./src/cli/index.ts --outdir ./dist/cli --target node && cp -r ./src/templates ./dist","build:types":"tsc --emitDeclarationOnly --outDir ./dist","test":"bun run --bun vitest","test:watch":"bun run --bun vitest --watch","dev":"bun --hot src/cli/index.ts","prepublishOnly":"bun run build && bun run build:types"},"dependencies":{"@armynante/fieldwork-core":"workspace:*","ejs":"^3.1.10"},"devDependencies":{"@armynante/fieldwork-test-utils":"workspace:*","@types/bun":"latest","@types/ejs":"^3.1.5","typescript":"^5","vitest":"^3.0.0"},"keywords":["scaffold","cli","project","template","bun","react","hono","fullstack"],"author":{"name":"armynante"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/armynante/templates.git"},"gitHead":"b35b3ab33fa2b18877a3cc583e2b94f5ae811a8e","_id":"@armynante/fieldwork-scaffold@0.5.2","bugs":{"url":"https://github.com/armynante/templates/issues"},"homepage":"https://github.com/armynante/templates#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-nrWqpUxYNqDOjVUr7U9o0w4ytUCGUFpcnIKwJqyWMlimQPLWZsHRjCWXBfbd716om0ai2D6sSAbFOqSAPgicxw==","shasum":"874c56aa4f206c84de8a25c74ac2ff3ed095c248","tarball":"https://registry.npmjs.org/@armynante/fieldwork-scaffold/-/fieldwork-scaffold-0.5.2.tgz","fileCount":62,"unpackedSize":183121,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEgCQxosPJYvMcHGwoukACdgFzRRFmeT0azuVR+9P2kzAiAunNS1V4D5aAM5qeYc1p47p4Wnel2D17NwYM6ZPrPVBg=="}]},"_npmUser":{"name":"armynante","email":"andrew.armenante@gmail.com"},"directories":{},"maintainers":[{"name":"armynante","email":"andrew.armenante@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fieldwork-scaffold_0.5.2_1767651537077_0.9328873767278087"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-05T22:18:56.994Z","0.5.2":"2026-01-05T22:18:57.226Z","modified":"2026-01-05T22:18:57.549Z"},"maintainers":[{"name":"armynante","email":"andrew.armenante@gmail.com"}],"description":"CLI for scaffolding new projects with optional frontend, backend, and storybook","homepage":"https://github.com/armynante/templates#readme","keywords":["scaffold","cli","project","template","bun","react","hono","fullstack"],"repository":{"type":"git","url":"git+https://github.com/armynante/templates.git"},"author":{"name":"armynante"},"bugs":{"url":"https://github.com/armynante/templates/issues"},"license":"MIT","readme":"# @armynante/scaffold-cli\n\nCLI tool for scaffolding new full-stack projects with React, Vike, Hono, and more.\n\n## Installation\n\n```bash\n# From npm/CodeArtifact\nbun add -g @armynante/scaffold-cli\n\n# Or use directly with bunx\nbunx @armynante/scaffold-cli init my-app\n```\n\n## Quick Start\n\n```bash\n# Create a full-stack project in current directory\nscaffold init my-app\n\n# Interactive mode (guided setup)\nscaffold init -i\n\n# Full-stack with database and deploy setup\nscaffold init my-app --with-database --with-deploy\n\n# Initialize in existing directory (merge with existing files)\nscaffold init my-app --merge\n```\n\n## Usage\n\n```bash\n# SSR only (no CSR example)\nscaffold init my-app --ssr\n\n# CSR only (client-side rendering)\nscaffold init my-spa --csr\n\n# API only (no frontend)\nscaffold init my-api --no-frontend --no-storybook\n\n# With database setup and initial model\nscaffold init my-app --with-database --initial-model \"User name:string email:string:unique\"\n\n# Specify output directory\nscaffold init my-app -o ./projects/my-app\n```\n\n## Features\n\nBy default, all features are **included**. Use `--no-*` flags to exclude:\n\n| Feature | Description | Exclude Flag |\n|---------|-------------|--------------|\n| Frontend | React 19, Vike (SSR/CSR), Tailwind CSS, Headless UI | `--no-frontend` |\n| Backend | Hono API routes, health checks | `--no-backend` |\n| Storybook | Component library with a11y testing | `--no-storybook` |\n\n## Integrations\n\nscaffold-cli integrates with external CLIs for database and deployment setup:\n\n| Integration | CLI Required | Flag | What it creates |\n|-------------|--------------|------|-----------------|\n| Database | `@armynante/database-cli` | `--with-database` | database.config.ts, migrations, seeds, models |\n| Deploy | `@armynante/deploy-cli` | `--with-deploy` | Dockerfile, deploy.config.json, .env.deploy |\n\nIf the required CLI is not installed, scaffold will prompt to install it globally.\n\n## Options\n\n```\n-i, --interactive    Run interactive mode with prompts\n-n, --name           Project name (alternative to positional)\n-o, --output         Output directory (default: current directory)\n\n--no-frontend        Exclude React/Vike frontend\n--no-backend         Exclude API routes (keep health check only)\n--no-storybook       Exclude Storybook\n\n--ssr                SSR only (server-side rendering)\n--csr                CSR only (client-side rendering)\n\n--port               Server port (default: 3000)\n--storybook-port     Storybook port (default: 6006)\n--hmr-host           HMR host for dev server (default: localhost)\n\n--with-database      Include database-cli setup\n--with-deploy        Run deploy init (creates Dockerfile/deploy.config.json)\n--skip-database      Skip database-cli setup\n--skip-deploy        Skip deploy init\n--database-envs      Database environments (default: dev,test)\n--skip-docker        Skip Docker setup in database-cli\n--initial-model      Generate initial model (e.g., \"User name:string email:string\")\n\n--merge              Merge with existing files in non-empty directory\n--overwrite          Overwrite existing files without prompting\n\n-v, --verbose        Verbose output\n-h, --help           Show help message\n--version            Show version\n```\n\n## Non-Empty Directory Support\n\nscaffold-cli can initialize projects in non-empty directories:\n\n- **`--merge`**: JSON configs (package.json, tsconfig.json) are deep-merged. Other files are overwritten.\n- **`--overwrite`**: All files are overwritten without prompting.\n- **Interactive mode**: Prompts you to choose merge, overwrite, or cancel.\n\n```bash\n# Merge into existing project\ncd existing-project\nscaffold init my-app --merge\n\n# Overwrite existing files\nscaffold init my-app --overwrite\n```\n\n## Development\n\n```bash\n# Install dependencies\nbun install\n\n# Run in development mode\nbun run dev\n\n# Build\nbun run build\n\n# Run tests (via root vitest.config.ts)\nbun run test\n\n# Type check\nbun run tsc --noEmit\n```\n\n## Project Structure\n\n```\nscaffold-cli/\n├── src/\n│   ├── cli/\n│   │   ├── index.ts        # CLI entry point\n│   │   ├── commands/       # CLI commands\n│   │   ├── output.ts       # Terminal output utilities\n│   │   └── prompt.ts       # Interactive prompts\n│   ├── services/\n│   │   ├── FileService.ts         # File operations\n│   │   ├── TemplateService.ts     # Template processing\n│   │   ├── FileConflictService.ts # Merge/overwrite handling\n│   │   ├── CLIDetectionService.ts # External CLI detection\n│   │   ├── CLIInstallService.ts   # CLI auto-install/upgrade\n│   │   └── ExternalCLIService.ts  # External CLI execution\n│   ├── templates/\n│   │   └── fullstack/      # Full-stack template\n│   ├── types.ts            # TypeScript types\n│   └── index.ts            # Module exports\n├── dist/                   # Build output\n├── package.json\n└── tsconfig.json\n```\n\n## Publishing\n\nFrom the repository root:\n\n```bash\nbun run publish:scaffold\n```\n\nOr directly:\n\n```bash\n./scripts/codeartifact-publish.sh Modules/scaffold-cli\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-ed71bab7be69f0d873506100475417af"}