Skip to content

Commit 5c775fb

Browse files
committed
fix(create): preserve Rsbuild dev-watch and update Solid Biome config
1 parent c05ce8b commit 5c775fb

3 files changed

Lines changed: 93 additions & 6 deletions

File tree

packages/cli/src/dev-watch.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ export class DevWatchManager {
257257
registeredFramework,
258258
this.options.cliOptions.mode,
259259
chosenAddonIds,
260+
this.options.cliOptions.bundler,
260261
)
261262

262263
// Check if package metadata was modified
@@ -467,6 +468,8 @@ export class DevWatchManager {
467468
addOns,
468469
basePackageJSON,
469470
optionalPackages,
471+
bundlers: this.options.framework.bundlers,
472+
defaultBundler: this.options.framework.defaultBundler,
470473
supportedModes: this.options.framework.supportedModes,
471474
}
472475
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises'
2+
import { tmpdir } from 'node:os'
3+
import { join } from 'node:path'
4+
5+
import { describe, expect, it } from 'vitest'
6+
import {
7+
createMemoryEnvironment,
8+
createReactFrameworkDefinition,
9+
} from '@tanstack/create'
10+
11+
import { DevWatchManager } from '../src/dev-watch'
12+
13+
import type {
14+
Framework,
15+
FrameworkDefinition,
16+
Options,
17+
} from '@tanstack/create'
18+
19+
function frameworkFromDefinition(definition: FrameworkDefinition): Framework {
20+
const { addOns, base, ...framework } = definition
21+
22+
return {
23+
...framework,
24+
getFiles: () => Promise.resolve(Object.keys(base)),
25+
getFileContents: (path) => Promise.resolve(base[path]),
26+
getDeletedFiles: () => Promise.resolve([]),
27+
getAddOns: () => addOns,
28+
}
29+
}
30+
31+
describe('DevWatchManager', () => {
32+
it('preserves bundler metadata when rebuilding a watched framework', async () => {
33+
const watchPath = await mkdtemp(join(tmpdir(), 'tanstack-dev-watch-'))
34+
const baseDirectory = join(watchPath, 'project', 'base')
35+
await mkdir(baseDirectory, { recursive: true })
36+
await writeFile(join(baseDirectory, 'package.json'), '{}')
37+
38+
try {
39+
const framework = frameworkFromDefinition(
40+
createReactFrameworkDefinition(),
41+
)
42+
const { environment } = createMemoryEnvironment()
43+
const cliOptions: Options = {
44+
projectName: 'dev-watch-app',
45+
targetDir: join(watchPath, 'target'),
46+
framework,
47+
mode: 'file-router',
48+
bundler: 'rsbuild',
49+
typescript: true,
50+
tailwind: true,
51+
packageManager: 'npm',
52+
git: false,
53+
install: true,
54+
intent: false,
55+
chosenAddOns: [],
56+
addOnOptions: {},
57+
}
58+
const manager = new DevWatchManager({
59+
watchPath,
60+
targetDir: cliOptions.targetDir,
61+
framework,
62+
cliOptions,
63+
packageManager: 'npm',
64+
environment,
65+
})
66+
const refreshedFramework = (
67+
manager as unknown as {
68+
createFrameworkDefinitionFromWatchPath: () => FrameworkDefinition | null
69+
}
70+
).createFrameworkDefinitionFromWatchPath()
71+
72+
expect(refreshedFramework?.bundlers).toEqual(framework.bundlers)
73+
expect(refreshedFramework?.defaultBundler).toBe(
74+
framework.defaultBundler,
75+
)
76+
} finally {
77+
await rm(watchPath, { recursive: true, force: true })
78+
}
79+
})
80+
})

packages/create/src/frameworks/solid/toolchains/biome/assets/biome.json.ejs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
11
{
2-
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
2+
"$schema": "https://biomejs.dev/schemas/2.2.4/schema.json",
33
"vcs": {
44
"enabled": false,
55
"clientKind": "git",
66
"useIgnoreFile": false
77
},
88
"files": {
99
"ignoreUnknown": false,
10-
"ignore": ["src/routeTree.gen.ts"],
11-
"include": ["src/*", ".vscode/*", <% if (bundler === 'vite') { %>"index.html", <% } %>"<%= bundler %>.config.ts"]
10+
"includes": [
11+
"**/src/**/*",
12+
"**/.vscode/**/*",
13+
<% if (bundler === 'vite') { %>"**/index.html",
14+
<% } %>"**/<%= bundler %>.config.ts",
15+
"!**/src/routeTree.gen.ts",
16+
"!**/src/styles.css"
17+
]
1218
},
1319
"formatter": {
1420
"enabled": true,
1521
"indentStyle": "tab"
1622
},
17-
"organizeImports": {
18-
"enabled": true
19-
},
23+
"assist": { "actions": { "source": { "organizeImports": "on" } } },
2024
"linter": {
2125
"enabled": true,
2226
"rules": {

0 commit comments

Comments
 (0)