Skip to content

Commit 4a8470a

Browse files
committed
Update to Vite 7, React 19, modernize configurations
1 parent 4e15525 commit 4a8470a

File tree

5 files changed

+819
-554
lines changed

5 files changed

+819
-554
lines changed

src/NewProject.res

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ open Node
22

33
module P = ClackPrompts
44

5-
let packageNameRegExp = %re("/^[a-z0-9-]+$/")
5+
let packageNameRegExp = /^[a-z0-9-]+$/
66

77
let validateProjectName = projectName =>
88
if projectName->String.trim->String.length === 0 {
@@ -19,20 +19,20 @@ let updatePackageJson = async (~projectName, ~versions) =>
1919
await JsonUtils.updateJsonFile("package.json", json =>
2020
switch json {
2121
| Object(config) => {
22-
config->Dict.set("name", String(projectName))
23-
24-
let scripts = switch config->Dict.get("scripts") {
25-
| Some(Object(scripts)) => scripts
26-
| _ =>
27-
let scripts = Dict.make()
28-
config->Dict.set("scripts", Object(scripts))
29-
scripts
30-
}
31-
32-
if RescriptVersions.usesRewatch(versions) {
33-
scripts->Dict.set("res:dev", String("rescript watch"))
22+
config->Dict.set("name", String(projectName))
23+
24+
let scripts = switch config->Dict.get("scripts") {
25+
| Some(Object(scripts)) => scripts
26+
| _ =>
27+
let scripts = Dict.make()
28+
config->Dict.set("scripts", Object(scripts))
29+
scripts
30+
}
31+
32+
if RescriptVersions.usesRewatch(versions) {
33+
scripts->Dict.set("res:dev", String("rescript watch"))
34+
}
3435
}
35-
}
3636
| _ => ()
3737
}
3838
)
@@ -55,6 +55,11 @@ let updateRescriptJson = async (~projectName, ~versions) =>
5555
if Option.isNone(versions.rescriptCoreVersion) {
5656
RescriptJsonUtils.removeRescriptCore(config)
5757
}
58+
59+
// https://github.com/rescript-lang/rescript/blob/master/CHANGELOG.md#1200-beta3
60+
if CompareVersions.satisfies(versions.rescriptVersion, ">=12.0.0-beta.3") {
61+
RescriptJsonUtils.modernizeConfigurationFields(config)
62+
}
5863
| _ => ()
5964
}
6065
)
@@ -119,8 +124,10 @@ let createNewProject = async () => {
119124
validate: validateProjectName,
120125
})->P.resultOrRaise
121126

122-
let templateName =
123-
await P.select({message: "Select a template", options: getTemplateOptions()})->P.resultOrRaise
127+
let templateName = await P.select({
128+
message: "Select a template",
129+
options: getTemplateOptions(),
130+
})->P.resultOrRaise
124131

125132
let versions = await RescriptVersions.promptVersions()
126133

src/RescriptJsonUtils.res

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,29 @@ let removeRescriptCore = (config: Dict.t<JSON.t>) => {
2727
| _ => ()
2828
}
2929
}
30+
31+
let modernizeConfigurationFields = (config: Dict.t<JSON.t>) => {
32+
// Rename "bs-dependencies" to "dependencies"
33+
switch config->Dict.get("bs-dependencies") {
34+
| Some(dependencies) =>
35+
config->Dict.set("dependencies", dependencies)
36+
config->Dict.delete("bs-dependencies")
37+
| _ => ()
38+
}
39+
40+
// Rename "bs-dev-dependencies" to "devDependencies"
41+
switch config->Dict.get("bs-dev-dependencies") {
42+
| Some(devDependencies) =>
43+
config->Dict.set("dev-dependencies", devDependencies)
44+
config->Dict.delete("bs-dev-dependencies")
45+
| _ => ()
46+
}
47+
48+
// Rename "bsc-flags" to "compiler-flags"
49+
switch config->Dict.get("bsc-flags") {
50+
| Some(compilerFlags) =>
51+
config->Dict.set("compiler-flags", compilerFlags)
52+
config->Dict.delete("bsc-flags")
53+
| _ => ()
54+
}
55+
}

src/Templates.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let templates = [
1010
{
1111
name: "rescript-template-vite",
1212
displayName: "Vite",
13-
shortDescription: "Vite 6, React and Tailwind 4",
13+
shortDescription: "Vite 7, React and Tailwind 4",
1414
},
1515
{
1616
name: "rescript-template-nextjs",

0 commit comments

Comments
 (0)