Skip to content

Commit f9bcf81

Browse files
authored
Merge pull request #100 from nojaf/update-vite
Update to Vite 7, React 19, modernize configurations
2 parents 4e15525 + e0f22c1 commit f9bcf81

File tree

5 files changed

+808
-554
lines changed

5 files changed

+808
-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: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,18 @@ let removeRescriptCore = (config: Dict.t<JSON.t>) => {
2727
| _ => ()
2828
}
2929
}
30+
31+
let renameConfigKey = (config: Dict.t<JSON.t>, ~from, ~to) => {
32+
switch config->Dict.get(from) {
33+
| Some(value) =>
34+
config->Dict.set(to, value)
35+
config->Dict.delete(from)
36+
| _ => ()
37+
}
38+
}
39+
40+
let modernizeConfigurationFields = (config: Dict.t<JSON.t>) => {
41+
renameConfigKey(config, ~from="bs-dependencies", ~to="dependencies")
42+
renameConfigKey(config, ~from="bs-dev-dependencies", ~to="dev-dependencies")
43+
renameConfigKey(config, ~from="bsc-flags", ~to="compiler-flags")
44+
}

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)