Skip to content

Commit 7a95b6a

Browse files
committed
fix(create): repair router-only package manifests
1 parent 12c31df commit 7a95b6a

5 files changed

Lines changed: 124 additions & 10 deletions

File tree

.changeset/tidy-spoons-dream.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@tanstack/create": patch
3+
"@tanstack/cli": patch
4+
---
5+
6+
Fix router-only package manifests by providing `@tanstack/router-core` for devtools under strict package managers and keeping `@tanstack/router-plugin` in devDependencies only.

packages/create/src/frameworks/react/project/packages.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
},
1717
"file-router": {
1818
"devDependencies": {
19-
"@tanstack/router-cli": "^1.132.0"
20-
},
21-
"dependencies": {
19+
"@tanstack/router-cli": "^1.132.0",
2220
"@tanstack/router-plugin": "^1.132.0"
2321
}
2422
}

packages/create/src/frameworks/solid/project/packages.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212
},
1313
"file-router": {
1414
"devDependencies": {
15-
"@tanstack/router-cli": "^1.133.21"
16-
},
17-
"dependencies": {
15+
"@tanstack/router-cli": "^1.133.21",
1816
"@tanstack/router-plugin": "^1.133.21"
1917
}
2018
}

packages/create/src/package-json.ts

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,21 +133,39 @@ export function createPackageJSON(options: Options) {
133133
if (options.framework.id === 'react') {
134134
delete packageJSON.dependencies?.['@tanstack/react-start']
135135
delete packageJSON.dependencies?.['@tanstack/react-router-ssr-query']
136+
const routerPluginVersion =
137+
packageJSON.devDependencies?.['@tanstack/router-plugin'] ??
138+
packageJSON.dependencies?.['@tanstack/router-plugin'] ??
139+
'latest'
140+
delete packageJSON.dependencies?.['@tanstack/router-plugin']
136141
packageJSON.devDependencies = {
137142
...(packageJSON.devDependencies ?? {}),
138-
'@tanstack/router-plugin':
139-
packageJSON.devDependencies?.['@tanstack/router-plugin'] ?? 'latest',
143+
'@tanstack/router-plugin': routerPluginVersion,
144+
}
145+
packageJSON.dependencies = {
146+
...(packageJSON.dependencies ?? {}),
147+
'@tanstack/router-core':
148+
packageJSON.dependencies?.['@tanstack/router-core'] ?? 'latest',
140149
}
141150
}
142151

143152
if (options.framework.id === 'solid') {
144153
delete packageJSON.dependencies?.['@tanstack/solid-start']
145154
delete packageJSON.dependencies?.['@tanstack/solid-router-ssr-query']
155+
const routerPluginVersion =
156+
packageJSON.devDependencies?.['@tanstack/router-plugin'] ??
157+
packageJSON.dependencies?.['@tanstack/router-plugin'] ??
158+
'latest'
159+
delete packageJSON.dependencies?.['@tanstack/router-plugin']
146160
delete packageJSON.scripts?.start
147161
packageJSON.devDependencies = {
148162
...(packageJSON.devDependencies ?? {}),
149-
'@tanstack/router-plugin':
150-
packageJSON.devDependencies?.['@tanstack/router-plugin'] ?? 'latest',
163+
'@tanstack/router-plugin': routerPluginVersion,
164+
}
165+
packageJSON.dependencies = {
166+
...(packageJSON.dependencies ?? {}),
167+
'@tanstack/router-core':
168+
packageJSON.dependencies?.['@tanstack/router-core'] ?? 'latest',
151169
}
152170
}
153171
}

packages/create/tests/package-json.test.ts

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,100 @@ describe('createPackageJSON', () => {
6060
expect(JSON.stringify(packageJSON)).toEqual(JSON.stringify(expected))
6161
})
6262

63+
it('should create a strict package-manager compatible React router-only package.json', () => {
64+
const packageJSON = createPackageJSON({
65+
chosenAddOns: [],
66+
mode: 'file-router',
67+
routerOnly: true,
68+
typescript: true,
69+
tailwind: true,
70+
projectName: 'test',
71+
framework: {
72+
id: 'react',
73+
basePackageJSON: {
74+
dependencies: {
75+
'@tanstack/react-router': 'latest',
76+
'@tanstack/react-router-devtools': 'latest',
77+
'@tanstack/react-router-ssr-query': 'latest',
78+
'@tanstack/react-start': 'latest',
79+
},
80+
devDependencies: {},
81+
},
82+
optionalPackages: {
83+
typescript: {},
84+
tailwindcss: {},
85+
'file-router': {
86+
dependencies: {
87+
'@tanstack/router-plugin': '^1.132.0',
88+
},
89+
devDependencies: {
90+
'@tanstack/router-cli': '^1.132.0',
91+
},
92+
},
93+
},
94+
} as unknown as Framework,
95+
} as unknown as Options)
96+
97+
expect(packageJSON.dependencies).toEqual({
98+
'@tanstack/react-router': 'latest',
99+
'@tanstack/react-router-devtools': 'latest',
100+
'@tanstack/router-core': 'latest',
101+
})
102+
expect(packageJSON.devDependencies).toEqual({
103+
'@tanstack/router-cli': '^1.132.0',
104+
'@tanstack/router-plugin': '^1.132.0',
105+
})
106+
})
107+
108+
it('should move router-plugin to devDependencies for Solid router-only package.json', () => {
109+
const packageJSON = createPackageJSON({
110+
chosenAddOns: [],
111+
mode: 'file-router',
112+
routerOnly: true,
113+
typescript: true,
114+
tailwind: true,
115+
projectName: 'test',
116+
framework: {
117+
id: 'solid',
118+
basePackageJSON: {
119+
scripts: {
120+
start: 'node .output/server/index.mjs',
121+
},
122+
dependencies: {
123+
'@tanstack/solid-router': 'latest',
124+
'@tanstack/solid-router-devtools': 'latest',
125+
'@tanstack/solid-router-ssr-query': 'latest',
126+
'@tanstack/solid-start': 'latest',
127+
},
128+
devDependencies: {},
129+
},
130+
optionalPackages: {
131+
typescript: {},
132+
tailwindcss: {},
133+
'file-router': {
134+
dependencies: {
135+
'@tanstack/router-plugin': '^1.133.21',
136+
},
137+
devDependencies: {
138+
'@tanstack/router-cli': '^1.133.21',
139+
},
140+
},
141+
},
142+
} as unknown as Framework,
143+
} as unknown as Options)
144+
145+
expect(packageJSON.dependencies).toEqual({
146+
'@tanstack/router-core': 'latest',
147+
'@tanstack/solid-router': 'latest',
148+
'@tanstack/solid-router-devtools': 'latest',
149+
})
150+
expect(packageJSON.devDependencies).toEqual({
151+
'@tanstack/router-cli': '^1.133.21',
152+
'@tanstack/router-plugin': '^1.133.21',
153+
})
154+
expect(packageJSON.scripts).toEqual({})
155+
})
156+
63157
it('should include sqlite build approval for pnpm templates', () => {
64158
const packageJSON = createPackageJSON({
65159
chosenAddOns: [

0 commit comments

Comments
 (0)