@tanstack/create 0.61.2 → 0.61.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
  3. package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
  4. package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
  5. package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
  6. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
  7. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
  8. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
  9. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
  10. package/dist/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
  11. package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
  12. package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
  13. package/dist/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
  14. package/dist/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
  15. package/dist/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
  16. package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
  17. package/dist/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
  18. package/dist/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
  19. package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
  20. package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
  21. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
  22. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
  23. package/dist/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
  24. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
  25. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
  26. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
  27. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
  28. package/dist/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
  29. package/dist/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
  30. package/dist/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
  31. package/dist/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
  32. package/dist/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
  33. package/dist/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
  34. package/dist/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
  35. package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
  36. package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
  37. package/dist/frameworks/react/add-ons/t3env/README.md +1 -1
  38. package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
  39. package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
  40. package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
  41. package/dist/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
  42. package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +2 -2
  43. package/dist/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
  44. package/dist/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
  45. package/dist/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
  46. package/dist/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
  47. package/dist/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
  48. package/dist/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
  49. package/dist/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
  50. package/dist/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
  51. package/dist/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
  52. package/dist/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
  53. package/dist/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
  54. package/dist/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
  55. package/dist/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
  56. package/dist/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
  57. package/dist/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
  58. package/dist/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
  59. package/dist/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
  60. package/dist/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
  61. package/dist/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
  62. package/dist/frameworks/react/project/base/_dot_gitignore +0 -1
  63. package/dist/frameworks/react/project/base/index.html.ejs +13 -0
  64. package/dist/frameworks/react/project/base/package.json +5 -2
  65. package/dist/frameworks/react/project/base/src/main.tsx.ejs +24 -0
  66. package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +33 -2
  67. package/dist/frameworks/react/project/base/tsconfig.json.ejs +5 -5
  68. package/dist/frameworks/react/project/base/vite.config.ts.ejs +8 -13
  69. package/dist/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
  70. package/dist/frameworks/solid/project/base/_dot_gitignore +0 -1
  71. package/dist/frameworks/solid/project/base/index.html.ejs +13 -0
  72. package/dist/frameworks/solid/project/base/src/main.tsx.ejs +23 -0
  73. package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +20 -0
  74. package/dist/frameworks/solid/project/base/vite.config.ts.ejs +6 -2
  75. package/dist/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
  76. package/dist/package-json.js +20 -0
  77. package/dist/template-file.js +1 -0
  78. package/dist/types/types.d.ts +1 -0
  79. package/package.json +1 -1
  80. package/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
  81. package/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
  82. package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
  83. package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
  84. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
  85. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
  86. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
  87. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
  88. package/src/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
  89. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
  90. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
  91. package/src/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
  92. package/src/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
  93. package/src/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
  94. package/src/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
  95. package/src/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
  96. package/src/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
  97. package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
  98. package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
  99. package/src/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
  100. package/src/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
  101. package/src/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
  102. package/src/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
  103. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
  104. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
  105. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
  106. package/src/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
  107. package/src/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
  108. package/src/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
  109. package/src/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
  110. package/src/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
  111. package/src/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
  112. package/src/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
  113. package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
  114. package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
  115. package/src/frameworks/react/add-ons/t3env/README.md +1 -1
  116. package/src/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
  117. package/src/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
  118. package/src/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
  119. package/src/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
  120. package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +2 -2
  121. package/src/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
  122. package/src/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
  123. package/src/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
  124. package/src/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
  125. package/src/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
  126. package/src/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
  127. package/src/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
  128. package/src/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
  129. package/src/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
  130. package/src/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
  131. package/src/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
  132. package/src/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
  133. package/src/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
  134. package/src/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
  135. package/src/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
  136. package/src/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
  137. package/src/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
  138. package/src/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
  139. package/src/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
  140. package/src/frameworks/react/project/base/_dot_gitignore +0 -1
  141. package/src/frameworks/react/project/base/index.html.ejs +13 -0
  142. package/src/frameworks/react/project/base/package.json +5 -2
  143. package/src/frameworks/react/project/base/src/main.tsx.ejs +24 -0
  144. package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +33 -2
  145. package/src/frameworks/react/project/base/tsconfig.json.ejs +5 -5
  146. package/src/frameworks/react/project/base/vite.config.ts.ejs +8 -13
  147. package/src/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
  148. package/src/frameworks/solid/project/base/_dot_gitignore +0 -1
  149. package/src/frameworks/solid/project/base/index.html.ejs +13 -0
  150. package/src/frameworks/solid/project/base/src/main.tsx.ejs +23 -0
  151. package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +20 -0
  152. package/src/frameworks/solid/project/base/vite.config.ts.ejs +6 -2
  153. package/src/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
  154. package/src/package-json.ts +24 -0
  155. package/src/template-file.ts +1 -0
  156. package/src/types.ts +1 -0
@@ -2,6 +2,9 @@
2
2
  "name": "",
3
3
  "private": true,
4
4
  "type": "module",
5
+ "imports": {
6
+ "#/*": "./src/*"
7
+ },
5
8
  "scripts": {
6
9
  "dev": "vite dev --port 3000",
7
10
  "build": "vite build",
@@ -16,8 +19,7 @@
16
19
  "@tanstack/react-start": "^1.132.0",
17
20
  "lucide-react": "^0.561.0",
18
21
  "react": "^19.2.0",
19
- "react-dom": "^19.2.0",
20
- "vite-tsconfig-paths": "^5.1.4"
22
+ "react-dom": "^19.2.0"
21
23
  },
22
24
  "devDependencies": {
23
25
  "@tanstack/devtools-vite": "^0.3.11",
@@ -29,6 +31,7 @@
29
31
  "jsdom": "^27.0.0",
30
32
  "typescript": "^5.7.2",
31
33
  "vite": "^7.1.7",
34
+ "vite-tsconfig-paths": "^5.1.4",
32
35
  "vitest": "^3.0.5"
33
36
  }
34
37
  }
@@ -0,0 +1,24 @@
1
+ <% if (!routerOnly) { ignoreFile() } %>
2
+ import React from 'react'
3
+ import ReactDOM from 'react-dom/client'
4
+ import { RouterProvider, createRouter } from '@tanstack/react-router'
5
+ import { routeTree } from './routeTree.gen'
6
+
7
+ const router = createRouter({
8
+ routeTree,
9
+ defaultPreload: 'intent',
10
+ scrollRestoration: true,
11
+ })
12
+
13
+ declare module '@tanstack/react-router' {
14
+ interface Register {
15
+ router: typeof router
16
+ }
17
+ }
18
+
19
+ const rootElement = document.getElementById('app')!
20
+
21
+ if (!rootElement.innerHTML) {
22
+ const root = ReactDOM.createRoot(rootElement)
23
+ root.render(<RouterProvider router={router} />)
24
+ }
@@ -1,3 +1,33 @@
1
+ <% if (routerOnly) { %>
2
+ import { Outlet, createRootRoute } from '@tanstack/react-router'
3
+ import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
4
+ import { TanStackDevtools } from '@tanstack/react-devtools'
5
+
6
+ import '../styles.css'
7
+
8
+ export const Route = createRootRoute({
9
+ component: RootComponent,
10
+ })
11
+
12
+ function RootComponent() {
13
+ return (
14
+ <>
15
+ <Outlet />
16
+ <TanStackDevtools
17
+ config={{
18
+ position: 'bottom-right',
19
+ }}
20
+ plugins={[
21
+ {
22
+ name: 'TanStack Router',
23
+ render: <TanStackRouterDevtoolsPanel />,
24
+ },
25
+ ]}
26
+ />
27
+ </>
28
+ )
29
+ }
30
+ <% } else { %>
1
31
  <% let hasContext = addOnEnabled["apollo-client"] || addOnEnabled["tanstack-query"]; %>
2
32
  import {
3
33
  HeadContent, Scripts, <% if (hasContext) { %>createRootRouteWithContext<% } else { %>createRootRoute<% } %> } from '@tanstack/react-router'
@@ -8,7 +38,7 @@ import Header from '../components/Header'
8
38
  <% } %><% for(const integration of integrations.filter(i => i.type === 'layout' || i.type === 'provider' || i.type === 'devtools')) { %>
9
39
  import <%= integration.jsName %> from '<%= relativePath(integration.path, true) %>'
10
40
  <% } %><% if (addOnEnabled.paraglide) { %>
11
- import { getLocale } from '@/paraglide/runtime'
41
+ import { getLocale } from '#/paraglide/runtime'
12
42
  <% } %>
13
43
  import appCss from '../styles.css?url'
14
44
  <% if (addOnEnabled["apollo-client"]) { %>
@@ -17,7 +47,7 @@ import type { ApolloClientIntegration } from "@apollo/client-integration-tanstac
17
47
  <% if (addOnEnabled["tanstack-query"]) { %>
18
48
  import type { QueryClient } from '@tanstack/react-query'
19
49
  <% if (addOnEnabled.tRPC) { %>
20
- import type { TRPCRouter } from '@/integrations/trpc/router'
50
+ import type { TRPCRouter } from '#/integrations/trpc/router'
21
51
  import type { TRPCOptionsProxy } from '@trpc/tanstack-react-query'
22
52
  <% } %>
23
53
  <% } %>
@@ -93,3 +123,4 @@ function RootDocument({ children }: { children: React.ReactNode }) {
93
123
  </html>
94
124
  )
95
125
  }
126
+ <% } %>
@@ -5,6 +5,10 @@
5
5
  "target": "ES2022",
6
6
  "jsx": "react-jsx",
7
7
  "module": "ESNext",
8
+ "baseUrl": ".",
9
+ "paths": {
10
+ "@/*": ["./src/*"]
11
+ },
8
12
  "lib": ["ES2022", "DOM", "DOM.Iterable"],
9
13
  "types": ["vite/client"],
10
14
 
@@ -21,10 +25,6 @@
21
25
  "noUnusedLocals": true,
22
26
  "noUnusedParameters": true,
23
27
  "noFallthroughCasesInSwitch": true,
24
- "noUncheckedSideEffectImports": true,
25
- "baseUrl": ".",
26
- "paths": {
27
- "@/*": ["./src/*"]
28
- }
28
+ "noUncheckedSideEffectImports": true
29
29
  }
30
30
  }
@@ -1,33 +1,28 @@
1
1
  import { defineConfig } from 'vite'
2
2
  import { devtools } from '@tanstack/devtools-vite'
3
+ import tsconfigPaths from 'vite-tsconfig-paths'
3
4
  <% if (addOnEnabled.paraglide) { -%>
4
5
  import { paraglideVitePlugin } from "@inlang/paraglide-js"
5
6
  <% } -%>
7
+ <% if (routerOnly) { %>
8
+ import { tanstackRouter } from '@tanstack/router-plugin/vite'
9
+ <% } else { %>
6
10
  import { tanstackStart } from '@tanstack/react-start/plugin/vite';
11
+ <% } %>
7
12
  import viteReact from '@vitejs/plugin-react'
8
- import viteTsConfigPaths from 'vite-tsconfig-paths'
9
- import { fileURLToPath, URL } from 'node:url'
10
13
  import tailwindcss from "@tailwindcss/vite"
11
14
  <% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
12
15
  <% } %>
13
16
 
14
17
  const config = defineConfig({
15
- resolve: {
16
- alias: {
17
- '@': fileURLToPath(new URL('./src', import.meta.url)),
18
- },
19
- },
20
18
  plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
21
19
  project: './project.inlang',
22
20
  outdir: './src/paraglide',
23
- strategy: ['url'],
21
+ strategy: ['url', "baseLocale"],
24
22
  }), <% } %><% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportCode(integration) %>,<% } %>
25
- // this is the plugin that enables path aliases
26
- viteTsConfigPaths({
27
- projects: ['./tsconfig.json'],
28
- }),
23
+ tsconfigPaths({ projects: ['./tsconfig.json'] }),
29
24
  tailwindcss(),
30
- tanstackStart(),
25
+ <% if (routerOnly) { %>tanstackRouter({ target: 'react', autoCodeSplitting: true }),<% } else { %>tanstackStart(),<% } %>
31
26
  viteReact(<% if (addOnEnabled.compiler) { %>{
32
27
  babel: {
33
28
  plugins: ["babel-plugin-react-compiler"],
@@ -2,4 +2,19 @@
2
2
 
3
3
  import { tanstackConfig } from '@tanstack/eslint-config'
4
4
 
5
- export default [...tanstackConfig]
5
+ export default [
6
+ ...tanstackConfig,
7
+ {
8
+ rules: {
9
+ 'import/no-cycle': 'off',
10
+ 'import/order': 'off',
11
+ 'sort-imports': 'off',
12
+ '@typescript-eslint/array-type': 'off',
13
+ '@typescript-eslint/require-await': 'off',
14
+ 'pnpm/json-enforce-catalog': 'off',
15
+ },
16
+ },
17
+ {
18
+ ignores: ['eslint.config.js', 'prettier.config.js'],
19
+ },
20
+ ]
@@ -10,4 +10,3 @@ dist-ssr
10
10
  .output
11
11
  .vinxi
12
12
  __unconfig*
13
- count.txt
@@ -0,0 +1,13 @@
1
+ <% if (!routerOnly) { ignoreFile() } %>
2
+ <!doctype html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="UTF-8" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title><%= projectName %></title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="/src/main.tsx"></script>
12
+ </body>
13
+ </html>
@@ -0,0 +1,23 @@
1
+ <% if (!routerOnly) { ignoreFile() } %>
2
+ import { render } from 'solid-js/web'
3
+ import { RouterProvider, createRouter } from '@tanstack/solid-router'
4
+ import { routeTree } from './routeTree.gen'
5
+
6
+ const router = createRouter({
7
+ routeTree,
8
+ defaultPreload: 'intent',
9
+ defaultPreloadStaleTime: 0,
10
+ scrollRestoration: true,
11
+ })
12
+
13
+ declare module '@tanstack/solid-router' {
14
+ interface Register {
15
+ router: typeof router
16
+ }
17
+ }
18
+
19
+ const rootElement = document.getElementById('app')!
20
+
21
+ if (!rootElement.innerHTML) {
22
+ render(() => <RouterProvider router={router} />, rootElement)
23
+ }
@@ -1,3 +1,22 @@
1
+ <% if (routerOnly) { %>
2
+ import { Outlet, createRootRoute } from '@tanstack/solid-router'
3
+ import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools'
4
+
5
+ import '../styles.css'
6
+
7
+ export const Route = createRootRoute({
8
+ component: RootComponent,
9
+ })
10
+
11
+ function RootComponent() {
12
+ return (
13
+ <>
14
+ <Outlet />
15
+ <TanStackRouterDevtools position="bottom-right" />
16
+ </>
17
+ )
18
+ }
19
+ <% } else { %>
1
20
  import { HeadContent, Outlet, Scripts, createRootRouteWithContext } from '@tanstack/solid-router'
2
21
  import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools'
3
22
 
@@ -47,3 +66,4 @@ function RootComponent() {
47
66
  </html>
48
67
  );
49
68
  }
69
+ <% } %>
@@ -2,7 +2,11 @@ import { defineConfig } from "vite";
2
2
  import { devtools } from '@tanstack/devtools-vite'
3
3
  import viteTsConfigPaths from 'vite-tsconfig-paths'
4
4
  import tailwindcss from "@tailwindcss/vite"
5
+ <% if (routerOnly) { %>
6
+ import { tanstackRouter } from '@tanstack/router-plugin/vite'
7
+ <% } else { %>
5
8
  import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
9
+ <% } %>
6
10
  import solidPlugin from 'vite-plugin-solid';
7
11
  <% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
8
12
  <% } %>
@@ -15,7 +19,7 @@ export default defineConfig({
15
19
  projects: ['./tsconfig.json'],
16
20
  }),
17
21
  tailwindcss(),
18
- tanstackStart(),
19
- solidPlugin({ ssr: true }),
22
+ <% if (routerOnly) { %>tanstackRouter({ target: 'solid', autoCodeSplitting: true }),<% } else { %>tanstackStart(),<% } %>
23
+ solidPlugin(<% if (!routerOnly) { %>{ ssr: true }<% } %>),
20
24
  ],
21
25
  })
@@ -2,4 +2,19 @@
2
2
 
3
3
  import { tanstackConfig } from "@tanstack/eslint-config";
4
4
 
5
- export default [...tanstackConfig];
5
+ export default [
6
+ ...tanstackConfig,
7
+ {
8
+ rules: {
9
+ "import/no-cycle": "off",
10
+ "import/order": "off",
11
+ "sort-imports": "off",
12
+ "@typescript-eslint/array-type": "off",
13
+ "@typescript-eslint/require-await": "off",
14
+ "pnpm/json-enforce-catalog": "off",
15
+ },
16
+ },
17
+ {
18
+ ignores: ["eslint.config.js", "prettier.config.js"],
19
+ },
20
+ ];
@@ -63,6 +63,7 @@ export function createPackageJSON(options: Options) {
63
63
  jsx: 'tsx',
64
64
  fileRouter: options.mode === 'file-router',
65
65
  codeRouter: options.mode === 'code-router',
66
+ routerOnly: options.routerOnly === true,
66
67
  addOnEnabled: options.chosenAddOns.reduce<Record<string, boolean>>(
67
68
  (acc, addon) => {
68
69
  acc[addon.id] = true
@@ -97,6 +98,29 @@ export function createPackageJSON(options: Options) {
97
98
  )
98
99
  }
99
100
 
101
+ if (options.routerOnly) {
102
+ if (options.framework.id === 'react-cra') {
103
+ delete packageJSON.dependencies?.['@tanstack/react-start']
104
+ delete packageJSON.dependencies?.['@tanstack/react-router-ssr-query']
105
+ packageJSON.devDependencies = {
106
+ ...(packageJSON.devDependencies ?? {}),
107
+ '@tanstack/router-plugin':
108
+ packageJSON.devDependencies?.['@tanstack/router-plugin'] ?? '^1.132.0',
109
+ }
110
+ }
111
+
112
+ if (options.framework.id === 'solid') {
113
+ delete packageJSON.dependencies?.['@tanstack/solid-start']
114
+ delete packageJSON.dependencies?.['@tanstack/solid-router-ssr-query']
115
+ delete packageJSON.scripts?.start
116
+ packageJSON.devDependencies = {
117
+ ...(packageJSON.devDependencies ?? {}),
118
+ '@tanstack/router-plugin':
119
+ packageJSON.devDependencies?.['@tanstack/router-plugin'] ?? '^1.133.20',
120
+ }
121
+ }
122
+ }
123
+
100
124
  packageJSON.dependencies = sortObject(
101
125
  (packageJSON.dependencies ?? {}) as Record<string, string>,
102
126
  )
@@ -136,6 +136,7 @@ export function createTemplateFile(environment: Environment, options: Options) {
136
136
  jsx: 'tsx',
137
137
  fileRouter: options.mode === 'file-router',
138
138
  codeRouter: options.mode === 'code-router',
139
+ routerOnly: options.routerOnly === true,
139
140
  addOnEnabled,
140
141
  addOnOption: options.addOnOptions,
141
142
  addOns: options.chosenAddOns,
package/src/types.ts CHANGED
@@ -206,6 +206,7 @@ export interface Options {
206
206
  chosenAddOns: Array<AddOn>
207
207
  addOnOptions: Record<string, Record<string, any>>
208
208
  starter?: Starter | undefined
209
+ routerOnly?: boolean
209
210
  }
210
211
 
211
212
  export type SerializedOptions = Omit<