Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 23 additions & 16 deletions src/NewProject.res
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ open Node

module P = ClackPrompts

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

let validateProjectName = projectName =>
if projectName->String.trim->String.length === 0 {
Expand All @@ -19,20 +19,20 @@ let updatePackageJson = async (~projectName, ~versions) =>
await JsonUtils.updateJsonFile("package.json", json =>
switch json {
| Object(config) => {
config->Dict.set("name", String(projectName))

let scripts = switch config->Dict.get("scripts") {
| Some(Object(scripts)) => scripts
| _ =>
let scripts = Dict.make()
config->Dict.set("scripts", Object(scripts))
scripts
}

if RescriptVersions.usesRewatch(versions) {
scripts->Dict.set("res:dev", String("rescript watch"))
config->Dict.set("name", String(projectName))

let scripts = switch config->Dict.get("scripts") {
| Some(Object(scripts)) => scripts
| _ =>
let scripts = Dict.make()
config->Dict.set("scripts", Object(scripts))
scripts
}

if RescriptVersions.usesRewatch(versions) {
scripts->Dict.set("res:dev", String("rescript watch"))
}
}
}
| _ => ()
}
)
Expand All @@ -55,6 +55,11 @@ let updateRescriptJson = async (~projectName, ~versions) =>
if Option.isNone(versions.rescriptCoreVersion) {
RescriptJsonUtils.removeRescriptCore(config)
}

// https://github.com/rescript-lang/rescript/blob/master/CHANGELOG.md#1200-beta3
if CompareVersions.satisfies(versions.rescriptVersion, ">=12.0.0-beta.3") {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actual changes, others are due to formatting.

RescriptJsonUtils.modernizeConfigurationFields(config)
}
| _ => ()
}
)
Expand Down Expand Up @@ -119,8 +124,10 @@ let createNewProject = async () => {
validate: validateProjectName,
})->P.resultOrRaise

let templateName =
await P.select({message: "Select a template", options: getTemplateOptions()})->P.resultOrRaise
let templateName = await P.select({
message: "Select a template",
options: getTemplateOptions(),
})->P.resultOrRaise

let versions = await RescriptVersions.promptVersions()

Expand Down
26 changes: 26 additions & 0 deletions src/RescriptJsonUtils.res
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,29 @@ let removeRescriptCore = (config: Dict.t<JSON.t>) => {
| _ => ()
}
}

let modernizeConfigurationFields = (config: Dict.t<JSON.t>) => {
// Rename "bs-dependencies" to "dependencies"
switch config->Dict.get("bs-dependencies") {
| Some(dependencies) =>
config->Dict.set("dependencies", dependencies)
config->Dict.delete("bs-dependencies")
| _ => ()
}

// Rename "bs-dev-dependencies" to "devDependencies"
switch config->Dict.get("bs-dev-dependencies") {
| Some(devDependencies) =>
config->Dict.set("dev-dependencies", devDependencies)
config->Dict.delete("bs-dev-dependencies")
| _ => ()
}

// Rename "bsc-flags" to "compiler-flags"
switch config->Dict.get("bsc-flags") {
| Some(compilerFlags) =>
config->Dict.set("compiler-flags", compilerFlags)
config->Dict.delete("bsc-flags")
| _ => ()
}
}
2 changes: 1 addition & 1 deletion src/Templates.res
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ let templates = [
{
name: "rescript-template-vite",
displayName: "Vite",
shortDescription: "Vite 6, React and Tailwind 4",
shortDescription: "Vite 7, React and Tailwind 4",
},
{
name: "rescript-template-nextjs",
Expand Down
Loading
Loading