feat: add blank project preset#488
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe CLI adds a ChangesBlank project generation
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant TanStackCLI
participant CreateOptions
participant CreateGenerator
participant GeneratedApp
User->>TanStackCLI: run create --blank
TanStackCLI->>CreateOptions: validate and normalize preset
CreateOptions->>CreateGenerator: pass blank, Tailwind, add-on, and deployment options
CreateGenerator->>GeneratedApp: render routes, styles, README, and package manifests
GeneratedApp-->>User: provide minimal runnable application
Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
packages/create/tests/package-json.test.tsParsing error: "parserOptions.project" has been provided for Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/cli/skills/create-app-scaffold/SKILL.md`:
- Line 93: Rename the heading in the minimal scaffold section to state “Use
--blank when a minimal scaffold is required,” aligning it with the supported
command and the section’s corrected example.
- Around line 48-52: Update every npx `@tanstack/cli` invocation in the create-app
scaffold skill examples to use the pinned `@tanstack/cli`@0.70.0 package version,
including the shown create command, while preserving all existing arguments and
behavior.
In `@packages/cli/src/cli.ts`:
- Around line 991-994: Extend the validation used by the shared --blank options
so the dev command also rejects incompatible flags such as --tailwind and
template/example combinations. Update the dev command flow around
startDevWatchMode to invoke validateLegacyCreateFlags, or centralize that
validation before entering dev mode, while preserving existing create-command
validation and preventing silent normalization.
In `@packages/cli/tests-e2e/helpers.ts`:
- Around line 413-414: Update the fixture creation flow around the afterCreate
callback so that if afterCreate rejects, the temporary app directory and
installed node_modules are cleaned up before the error propagates. Preserve the
existing callback behavior and successful fixture return path.
In `@packages/create/src/frameworks/react/project/base/README.md.ejs`:
- Line 4: Update the README template’s styling description to render
conditionally from the existing `tailwind` template context, so projects with
Tailwind no longer claim to use plain CSS while preserving the appropriate
description for non-Tailwind projects.
In `@packages/create/src/frameworks/solid/project/packages.json`:
- Around line 21-23: Update the file-router manifest in packages.json to include
`@tanstack/router-plugin` as a dependency required by the routerOnly branch in
vite.config.ts.ejs, preserving the existing versioning and dependency
conventions so generated projects can resolve the imported Vite plugin.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e2bcc436-675b-4db3-a94c-5a76d44620ec
⛔ Files ignored due to path filters (6)
packages/create/src/frameworks/react/project/base/public/favicon.icois excluded by!**/*.icopackages/create/src/frameworks/react/project/base/public/logo192.pngis excluded by!**/*.pngpackages/create/src/frameworks/react/project/base/public/logo512.pngis excluded by!**/*.pngpackages/create/src/frameworks/solid/project/base/public/favicon.icois excluded by!**/*.icopackages/create/src/frameworks/solid/project/base/public/logo192.pngis excluded by!**/*.pngpackages/create/src/frameworks/solid/project/base/public/logo512.pngis excluded by!**/*.png
📒 Files selected for processing (67)
.agents/index.md.changeset/clean-cats-start.mdREADME.mddocs/cli-reference.mddocs/quick-start.mdexamples/react/blog/package.jsonpackages/cli/skills/add-addons-existing-app/SKILL.mdpackages/cli/skills/choose-ecosystem-integrations/SKILL.mdpackages/cli/skills/create-app-scaffold/SKILL.mdpackages/cli/skills/create-app-scaffold/references/create-flag-compatibility-matrix.mdpackages/cli/skills/create-app-scaffold/references/framework-adapters.mdpackages/cli/skills/maintain-custom-addons-dev-watch/SKILL.mdpackages/cli/skills/query-docs-library-metadata/SKILL.mdpackages/cli/src/cli.tspackages/cli/src/command-line.tspackages/cli/src/options.tspackages/cli/src/types.tspackages/cli/tests-e2e/blank-smoke.spec.tspackages/cli/tests-e2e/helpers.tspackages/cli/tests/command-line.test.tspackages/cli/tests/options.test.tspackages/create/package.jsonpackages/create/scripts/copy-assets.mjspackages/create/scripts/generate-manifest.mjspackages/create/src/add-to-app.tspackages/create/src/create-app.tspackages/create/src/edge-create-app.tspackages/create/src/edge-package-json.tspackages/create/src/edge-render.tspackages/create/src/edge-template-file.tspackages/create/src/frameworks/react/add-ons/posthog/info.jsonpackages/create/src/frameworks/react/add-ons/shadcn/info.jsonpackages/create/src/frameworks/react/add-ons/shadcn/package.jsonpackages/create/src/frameworks/react/add-ons/shopify/info.jsonpackages/create/src/frameworks/react/add-ons/strapi/package.jsonpackages/create/src/frameworks/react/add-ons/tanstack-query/package.jsonpackages/create/src/frameworks/react/examples/events/package.jsonpackages/create/src/frameworks/react/examples/resume/package.jsonpackages/create/src/frameworks/react/hosts/cloudflare/package.json.ejspackages/create/src/frameworks/react/project/base/README.md.ejspackages/create/src/frameworks/react/project/base/package.jsonpackages/create/src/frameworks/react/project/base/public/manifest.jsonpackages/create/src/frameworks/react/project/base/public/robots.txtpackages/create/src/frameworks/react/project/base/src/App.test.tsx.ejspackages/create/src/frameworks/react/project/base/src/routes/__root.tsx.ejspackages/create/src/frameworks/react/project/base/src/routes/index.tsx.ejspackages/create/src/frameworks/react/project/base/src/styles.css.ejspackages/create/src/frameworks/react/project/base/vite.config.ts.ejspackages/create/src/frameworks/react/project/packages.jsonpackages/create/src/frameworks/solid/add-ons/solid-ui/info.jsonpackages/create/src/frameworks/solid/project/base/README.md.ejspackages/create/src/frameworks/solid/project/base/_dot_cursorrules.appendpackages/create/src/frameworks/solid/project/base/package.jsonpackages/create/src/frameworks/solid/project/base/public/manifest.jsonpackages/create/src/frameworks/solid/project/base/public/robots.txtpackages/create/src/frameworks/solid/project/base/src/App.test.tsx.ejspackages/create/src/frameworks/solid/project/base/src/routes/__root.tsx.ejspackages/create/src/frameworks/solid/project/base/src/routes/index.tsx.ejspackages/create/src/frameworks/solid/project/base/src/styles.css.ejspackages/create/src/frameworks/solid/project/base/vite.config.ts.ejspackages/create/src/frameworks/solid/project/packages.jsonpackages/create/src/package-json.tspackages/create/src/template-file.tspackages/create/src/types.tspackages/create/tests/add-to-app.test.tspackages/create/tests/blank-preset.test.tspackages/create/tests/react-template-dependencies.test.ts
💤 Files with no reviewable changes (9)
- packages/create/src/frameworks/solid/project/base/public/robots.txt
- packages/create/src/frameworks/solid/project/base/_dot_cursorrules.append
- packages/create/src/frameworks/react/project/base/public/manifest.json
- packages/create/src/frameworks/solid/project/base/public/manifest.json
- packages/create/src/frameworks/react/project/base/src/App.test.tsx.ejs
- packages/create/src/frameworks/react/project/base/public/robots.txt
- packages/create/src/frameworks/react/add-ons/posthog/info.json
- packages/create/src/frameworks/solid/project/base/src/App.test.tsx.ejs
- examples/react/blog/package.json
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/create/tests/package-json.test.ts`:
- Around line 45-48: Extend the normal-project assertion around
createPackageJSON to verify that the appropriate Start dependency,
`@tanstack/react-start` or `@tanstack/solid-start` based on the selected framework,
remains in devDependencies when routerOnly is not enabled. Keep the existing
router-plugin absence assertion unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 932970f5-bda2-4d09-8db4-3962a0d765f8
📒 Files selected for processing (8)
packages/cli/skills/create-app-scaffold/SKILL.mdpackages/cli/src/cli.tspackages/cli/tests-e2e/blank-smoke.spec.tspackages/cli/tests-e2e/helpers.tspackages/create/src/frameworks/react/project/base/README.md.ejspackages/create/src/frameworks/solid/project/base/README.md.ejspackages/create/tests/blank-preset.test.tspackages/create/tests/package-json.test.ts
🚧 Files skipped from review as they are similar to previous changes (3)
- packages/create/src/frameworks/solid/project/base/README.md.ejs
- packages/cli/src/cli.ts
- packages/create/tests/blank-preset.test.ts
What changed
--blankpreset for minimal React and Solid projectsWhy
The standard starter is useful for exploration, but it obscures framework startup and dependency costs in clean-room evaluation and in minimal production projects. The blank preset creates the smallest helpful project while retaining framework-required structure and explicit opt-ins.
Validation
pnpm buildpnpm testpnpm --filter @tanstack/cli exec intent validate skillsThe changeset releases minor versions of
@tanstack/cliand@tanstack/create.Summary by CodeRabbit
--blankto create minimal, production-ready TanStack Start apps in non-interactive mode./route and conditionally include Tailwind and devtools (re-enabled only when add-ons require them); intent/examples are omitted..cta.json-driven preset behavior for generated project contents.--blankexamples and clarified include/exclude details (including intent and--tailwindinteractions).--blankflag incompatibility handling and non-interactive safety checks (instructs using--forcewhen needed).