Skip to content

Commit 36967ac

Browse files
committed
test: add setup script for react 19
1 parent ffa84a8 commit 36967ac

3 files changed

Lines changed: 52 additions & 0 deletions

File tree

package-lock.json

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"@prettier/sync": "0.5.5",
5959
"@primer/stylelint-config": "13.3.0",
6060
"@size-limit/preset-big-lib": "11.2.0",
61+
"@types/semver": "^7.7.1",
6162
"@vitest/browser": "^4.0.3",
6263
"@vitest/browser-playwright": "^4.0.3",
6364
"@vitest/eslint-plugin": "^1.3.24",

script/setup-react-19.mts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import fs from 'node:fs'
2+
import glob from 'fast-glob'
3+
import semver from 'semver'
4+
5+
const versions = new Map([
6+
['@types/react', '^19.2.2'],
7+
['@types/react-dom', '^19.2.2'],
8+
['@types/react-is', '^19.2.0'],
9+
['react', '^19.2.0'],
10+
['react-dom', '^19.2.0'],
11+
['react-is', '^19.2.0'],
12+
])
13+
14+
const packageJsonPaths = glob.sync('{examples,packages}/**/package.json', {
15+
ignore: ['**/node_modules/**', '**/dist/**', '**/lib/**', '**/lib-esm/**', '**/.next/**', '**/storybook-static/**'],
16+
})
17+
18+
const dependencyTypes = new Set(['dependencies', 'devDependencies', 'peerDependencies'])
19+
20+
for (const packageJsonPath of packageJsonPaths) {
21+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'))
22+
23+
for (const dependencyType of dependencyTypes) {
24+
const dependencies = packageJson[dependencyType]
25+
26+
if (!dependencies) {
27+
continue
28+
}
29+
30+
for (const [pkg, targetRange] of versions) {
31+
const range = dependencies[pkg]
32+
if (!range) {
33+
continue
34+
}
35+
36+
if (!semver.subset(targetRange, range)) {
37+
dependencies[pkg] = targetRange
38+
}
39+
}
40+
}
41+
42+
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf8')
43+
}

0 commit comments

Comments
 (0)